Bash PATH değişkeni $bir yolu kaldırmak için en zarif yolu nedir? | Netgez.com
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

  • Mr. H

    Mr. H

    1 Temmuz 2012
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011
  • WOSU Public Media

    WOSU Public

    23 AÄžUSTOS 2007