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
Nelze nainstalovat Ruby rvm na Ubuntu 16.04 kvůli chybě gpg
Jak používat volbu --since s příkazem docker logs