Anda dapat menggunakan read
dengan pembatas ditetapkan sebagai :
while read -d ':' p; do
echo "$p"
done <<< "$PATH:"
Cara paling sederhana mungkin adalah mengubah IFS
ke titik dua dan biarkan pemisahan kata melakukannya:
IFS=:
for p in $PATH ; do
echo "$p"
done
Tapi itu mungkin memicu globbing nama file, dalam kasus aneh bahwa PATH
Anda berisi karakter seperti *?[]
. Anda harus menggunakan set -f
untuk menghindari itu.
Meskipun mengubah IFS
mungkin dianggap bermasalah, karena memengaruhi skrip lainnya. Jadi di Bash, kita bisa membagi jalur ke array dengan read -a
, ini juga tidak bermasalah dengan karakter glob:
IFS=: read -a paths <<< "$PATH"
for p in "${paths[@]}" ; do
echo "$p"
done
dengan gema:
echo "${PATH//:/$'\n'}"
sed:
sed 's/:/\n/g' <<< "$PATH"
tr:
tr ':' '\n' <<< "$PATH"
python:
python -c "import os; print os.environ['PATH'].replace(':', '\n')"
untuk pengulangan digunakan untuk:
for i in ${PATH//:/ }; do echo $i; done
Tidak dapat menginstal Ruby rvm di Ubuntu 16.04 karena bug gpg
Cara menggunakan opsi --since dengan perintah docker logs