Bash PATH değişkeni $bir yolu kaldırmak için en zarif yolu nedir?
Ya da daha genel olarak, nasıl bir Bash ortamında virgülle ayrılan bir listeden bir öğeyi kaldırmak değişken muyum?
Bunu yıllar önce yapmak için basit bir yolu, Bash değişken genişleme daha gelişmiş formları kullanarak görmemiştim, ama, eğer bu izini kaybettim diye düşündüm. Google hızlı bir arama şaşırtıcı birkaç ilgili sonuçlar ve derim ki hiçbiri çıkmadı "" veya "". zarif basit Örneğin, iki farklı yöntem kullanarak sed ve awk sırasıyla:
PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;')
PATH=!(awk -F: '{for(i=1;i<=NF;i ){if(!($i in a)){a[$i];printf s$i;s=":"}}}'<<<$PATH)
Basit bir şey var mı? Bir şey var bir bölünme paraleldir() Bash fonksiyonu?
Güncelleme:^ br . Kasıtlı olarak-belirsiz benim sorum için özür dilemem gerekiyormuş gibi görünüyor; belirli bir durumda kullanmak iyi tartışmaya daha çözümünde daha az ilgileniyordum. Neyse, buldum!
Çok zeki bazı teknikler var, ama bu kullanarak saf Bash script nicerobot's IFS/array technique hoş ve yakın geliyor olsa) yapmanın bir yolu yok gibi görünüyor. Sonunda, benim araç aşağıdaki üç fonksiyonlar ekledim. Büyü büyük ölçüde Martin York's clever use of awk's RS variable dayanan path_remove, olur.
path_append () { path_remove $1; export PATH="$PATH:$1"; }
path_prepend () { path_remove $1; export PATH="$1:$PATH"; }
path_remove () { export PATH=`echo -n $PATH | awk -v RS=: -v ORS=: '$0 != "'$1'"' | sed 's/:$//'`; }
Orada tek gerçek işe yaramayan öğeleri sed eğik kolon kaldırmak için kullanılır. Ne kadar basit Martin'in çözüm geri kalanı göz önüne alındığında, olsa, yaşamak istiyorum!
< / ^ hr .
İlgili soru: http://stackoverflow.com/questions/273909/how-do-i-manipulate-path-elements-in-shell-scripts
CEVAP
Benim kirli kesmek:
echo ${PATH} > t1
vi t1
export PATH=`cat t1`

Bir ağaca doğru düz bir masa ayrıştırm...
Python unicode dizesi aksan kaldırmak ...
JQuery ile bir tablo satırı kaldırmak ...
Bir dizi ilk öğe kaldırmak için en kol...
Bir dizesindeki ilk karakteri kaldırma...