LoginSignup
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2018-08-22

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)

あわせて読みたい?

Links

チャットメンバー募集

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

Twitter

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0