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