GNU/Linux >> Linux の 問題 >  >> Linux

シェル スクリプトを使用して $PATH 変数を反復処理する

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

Linux
  1. 現在のgitブランチの名前をシェルスクリプトの変数に取得する方法は?

  2. シェルスクリプトを使用して HTML メールを送信する

  3. シェル スクリプトを使用してデータベース接続を確認する

  1. Linuxで$PATH変数を設定する方法

  2. シェルスクリプトでファイルをコピーして上書きする

  3. シェル スクリプトを使用して MAC アドレスを取得する

  1. シェルスクリプトの予期しない動作?

  2. シェルスクリプトがメールコマンドでハングアップしますか?

  3. 変数と整数を使用した基本的な除算?