hkoba blog

プログラマーです。プログラミング言語ミーハーです。ツッコミ歓迎です。よろしくどうぞ(能代口調)

私がシェルスクリプトをZshで書く理由

まず最初に、4つのファイル foo, bar, *, xxx yyy があるディレクトリがあるとします。(試したい場合は新規のディレクトリで下記のコマンドを実行してください。)

touch foo bar \* 'xxx yyy'

さてここで、ループを使って各ファイルを一つ一つ、コマンドに食わせたいとします。 そのために、こんなループを書いたとしましょう>

for f in *; do
  ls -l $f
done

それがこんな動作になるシェルは 疲れる から、です。 f:id:hkoba501:20200603120813p:plain

zsh であれば、デフォルトの設定( no_sh_word_split かつ no_glob_subst )で使っていれば、期待通りに4回だけ、一つずつファイルを渡しながらコマンドを実行してくれます。

f:id:hkoba501:20200603123244p:plain

(なお実行中の zsh をデフォルト設定にリセットするには emulate -L zsh コマンドが使えます)

他にも理由はありますが、これだけでも十分な理由かなと。

読んで下さり、ありがとうございました。