Sie können read
verwenden mit Trennzeichen auf :
gesetzt
while read -d ':' p; do
echo "$p"
done <<< "$PATH:"
Der einfachste Weg ist wahrscheinlich, IFS
zu ändern zu einem Doppelpunkt und lass es die Worttrennung erledigen:
IFS=:
for p in $PATH ; do
echo "$p"
done
Aber das könnte Dateinamen-Globbing auslösen, in dem seltsamen Fall, dass Ihre PATH
enthaltene Zeichen wie *?[]
. Sie müssen set -f
verwenden um das zu vermeiden.
Obwohl IFS
geändert wird könnte sowieso als problematisch angesehen werden, da es den Rest des Skripts betrifft. In Bash könnten wir also einfach die Pfade mit read -a
in ein Array aufteilen , das hat auch kein Problem mit Glob-Zeichen:
IFS=: read -a paths <<< "$PATH"
for p in "${paths[@]}" ; do
echo "$p"
done
mit echo:
echo "${PATH//:/$'\n'}"
sed:
sed 's/:/\n/g' <<< "$PATH"
tr:
tr ':' '\n' <<< "$PATH"
Python:
python -c "import os; print os.environ['PATH'].replace(':', '\n')"
zur iterativen Verwendung für:
for i in ${PATH//:/ }; do echo $i; done