🖥
シェル — $PATH をスペース区切りにして強引に for で回す例
例
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo $i; done;
- コロンをスペースに置換する
- スペース区切りになった PATH を for にわたす
- for はそれを「複数の引数」と認識して、1個ごとにループしてくれる
- クォートで区切ってしまうと「一個の引数」と解釈されて期待通りに動かない ( e.g
"$(echo "$PATH" | sed 's/:/ /g')"
)
- クォートで区切ってしまうと「一個の引数」と解釈されて期待通りに動かない ( e.g
出力例
bash-4.4$ for i in $(echo "$PATH" | sed 's/:/ /g'); do echo $i; done;
/Users/yuma/.rbenv/shims
/Users/yuma/.rbenv/bin
/Users/yuma/.rbenv/shims
/Users/yuma/.rbenv/bin
./vendor/bin
/Users/yinaura/google-cloud-sdk/bin
/usr/local/opt/openssl/bin
/Users/yuma/.pyenv/shims
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
他の例
$PATH の最初を取る
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo $i; done | head -n 1
/Users/yuma/.rbenv/shims
$PATH の最後を取る
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo $i; done | tail -n -1
/sbin
備考
awk とか使ったほうがスマートそう。(たぶん)
Versions
- GNU bash, version 4.4.23(1)-release (x86_64-apple-darwin17.5.0)
あわせて読みたい?
Links
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2018-08-23
Discussion