シェル — $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
Author And Source
この問題について(シェル — $PATH をスペース区切りにして強引に for で回す例), 我々は、より多くの情報をここで見つけました https://qiita.com/YumaInaura/items/96031d67fa92161c5474著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .