ユーザー入力の基本
bash スクリプトの中で、read 変数名
とすると、ユーザーがキーボードで入力したテキストを変数に取得することができます。
変数名
の部分には、$
プレフィックスを付けないことに注意してください(変数の内容を参照するときは $
が必要です)。
☝️ echo の -n オプション
echo
コマンドの出力はデフォルトで末尾で改行されますが、-n
オプションを使うとこの改行を抑制できます。
上記の例のように、プロンプト表示で利用できます。ユーザーが y を入力したときだけ処理を継続する
read
コマンドの典型的な使用例として、ユーザーに y/n
の選択肢を入力させるものがあります。
次の remove_all
関数は、何もかもを削除する前に、ユーザーに最終確認を行っています。
if
の中で $input
の内容を確認するときに、ダブルクォーテーションで囲んでいるのは、ユーザーの入力がなかった場合に空文字 ""
を取得するためです。
これがないと、ユーザーが何も入力せずにエンターした場合にエラーになってしまいます。
スペースで区切られたユーザー入力を別々の変数に取得する
read
コマンドの後ろに複数の変数を指定すると、スペースで区切られたユーザー入力を別々の変数に取得することができます。
read
に指定した変数の数よりも、入力が少ない場合は、変数が空になります。
$ ./sample.sh
100 200
aaa = 100
bbb = 200
ccc =
逆に、入力の方が多い場合は、read
コマンドの最後に指定した変数にまとめて格納されます。
$ ./sample.sh
100 200 300 400 500
aaa = 100
bbb = 200
ccc = 300 400 500