🖥

シェル — $PATH をスペース区切りにして強引に for で回す例

2023/08/26に公開

for i in $(echo "$PATH" | sed 's/:/ /g'); do echo $i;  done;
  • コロンをスペースに置換する
  • スペース区切りになった PATH を for にわたす
  • for はそれを「複数の引数」と認識して、1個ごとにループしてくれる
    • クォートで区切ってしまうと「一個の引数」と解釈されて期待通りに動かない ( e.g "$(echo "$PATH" | sed 's/:/ /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)

あわせて読みたい?

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2018-08-23

Discussion