GNU/Linux >> Linux Esercitazione >  >> Linux

Itera sulla variabile $ PATH usando lo script di shell

Puoi usare read con delimitatore impostato come :

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

Il modo più semplice è probabilmente cambiare IFS ai due punti e lascia che la parola splitting lo faccia:

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

Ma questo potrebbe innescare il globbing del nome del file, nel caso strano che il tuo PATH conteneva caratteri come *?[] . Dovresti usare set -f per evitarlo.

Pur cambiando IFS potrebbe comunque essere considerato problematico, poiché influisce sul resto dello script. Quindi in Bash, potremmo semplicemente dividere i percorsi in un array con read -a , anche questo non ha problemi con i caratteri glob:

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

con eco:

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

sed:

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

tr:

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

pitone:

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

per uso iterato for:

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

Linux
  1. Comportamento imprevisto di uno script di shell?

  2. Come creare un'animazione di rotazione utilizzando lo script Shell?

  3. Come ottenere il nome dell'attuale ramo git in una variabile in uno script di shell?

  4. Modifica lo script della shell mentre è in esecuzione

  5. Come memorizzare un comando in una variabile in uno script di shell?

Come memorizzare un comando Linux come variabile nello script della shell

Itera sulle righe anziché sulle parole in un ciclo for dello script di shell

Copia e sovrascrivi un file nello script della shell

Libreria di output di script di shell colorata

Ottieni l'indirizzo MAC usando lo script della shell

Dove è impostata la variabile PATH in Ubuntu?