GNU/Linux >> Znalost Linux >  >> Linux

Iterujte přes proměnnou $PATH pomocí skriptu shellu

Můžete použít read s oddělovačem nastaveným jako :

while read -d ':' p; do
   echo "$p"
done <<< "$PATH:"

Nejjednodušší způsob je pravděpodobně změnit IFS na dvojtečku a nechte to udělat slovo dělení:

IFS=:
for p in $PATH ; do 
    echo "$p"
done

Ale to by mohlo způsobit globování názvů souborů, v podivném případě, že vaše PATH obsahoval znaky jako *?[] . Budete muset použít set -f abyste se tomu vyhnuli.

I když se mění IFS může být každopádně považováno za problematické, protože ovlivňuje zbytek skriptu. Takže v Bash jsme mohli jednoduše rozdělit cesty k poli pomocí read -a , to nemá problém ani se znaky glob:

IFS=: read -a paths <<< "$PATH"
for p in "${paths[@]}" ; do
    echo "$p"
done

s echem:

echo "${PATH//:/$'\n'}"

sed:

sed 's/:/\n/g' <<< "$PATH"

tr:

tr ':' '\n' <<< "$PATH"

python:

python -c "import os; print os.environ['PATH'].replace(':', '\n')"

pro iterační použití pro:

for i in ${PATH//:/ }; do echo $i; done

Linux
  1. Shell skript změní adresář s proměnnou

  2. Variabilní rozsah pro skripty bash shell a funkce ve skriptu

  3. Získejte MAC adresu pomocí shell skriptu

  1. Neočekávané chování skriptu Shell?

  2. Základní dělení pomocí proměnné a celého čísla?

  3. Kde je v Ubuntu nastavena proměnná PATH?

  1. Jak získat název aktuální větve git do proměnné v shell skriptu?

  2. Odesílání HTML pošty pomocí shell skriptu

  3. Zkontrolujte konektivitu databáze pomocí skriptu Shell