SORU
15 Aralık 2008, PAZARTESİ


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:

Ç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
16 Aralık 2008, Salı


Benim kirli kesmek:

echo ${PATH} > t1
vi t1
export PATH=`cat t1`

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobinire

    bobinire

    24 EYLÜL 2006
  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007