Open5
マスタリングLinuxシェルスクリプト 第2版
1章 bash のスクリプトとは何か、なぜそれが必要なのか?
2章 インタラクティブなスクリプトの作成
ヒアドキュメント
擬似的に複数行のコメントを記述する。
: <<"END"
this
is
multiline
comment
END
- コロンは何もしない組み込みコマンド
- << の後の文字列は END でなくともよい
- 例えば、: <<"COMMENT" ... COMMENT 等でもよい
- とにかく他の行に現れないような文字にすること
<< 後の文字列のダブルクォーテーションを外すと、コマンド置換が実行される。
sample.sh
cat <<END
$(echo "Hello World")
END
$ bash sample.sh
Hello World
ref: pp. 37-39
coprocess
bash では read -p <prompt> <variable>
で プロンプトと結果を代入する変数を同時に扱えるが、zsh の read
における p オプションは coprocess から入力を読み取るという役割を持つ。代わりに read "<variable>?<prompt>"
という書式が用意されている。
TOOD: coprocess を利用してテトリスを作れないか考える
標準出力と標準エラー出力のリダイレクト
-
1>
: 標準出力(>
に省略可) -
2>
: 標準エラー出力
リダイレクトは左から順に解釈される
パターン1
$ unknown_command 2>&1 > /dev/null
bash: unknown_command: command not found
- 標準エラー出力が標準出力にリダイレクトされる
- 標準出力が /dev/null にリダイレクトされる(捨てられる)
- エラーのみ表示される
パターン2
$ unknown_command > /dev/null 2>&1
- 標準出力が /dev/null にリダイレクトされる
- 標準エラー出力が 標準出力 => /dev/null へリダイレクトされる
- 何も表示されない