read
を使用できます 区切り文字を :
に設定
while read -d ':' p; do
echo "$p"
done <<< "$PATH:"
最も簡単な方法は、おそらく IFS
を変更することです コロンに変換して単語分割に任せます:
IFS=:
for p in $PATH ; do
echo "$p"
done
しかし、それはファイル名のグロビングを引き起こす可能性があります。奇妙なケースでは、 PATH
*?[]
のような文字が含まれていた . set -f
を使用する必要があります それを避けるために。
IFS
を変更しても スクリプトの残りの部分に影響を与えるため、とにかく問題があると見なされる可能性があります。したがって、Bash では、read -a
を使用して配列へのパスを分割するだけで済みます。 、これはグロブ文字でも問題ありません:
IFS=: read -a paths <<< "$PATH"
for p in "${paths[@]}" ; do
echo "$p"
done
エコーあり:
echo "${PATH//:/$'\n'}"
セッド:
sed 's/:/\n/g' <<< "$PATH"
tr:
tr ':' '\n' <<< "$PATH"
パイソン:
python -c "import os; print os.environ['PATH'].replace(':', '\n')"
反復使用:
for i in ${PATH//:/ }; do echo $i; done