プロンプトから値を受け取ろう
プロンプトを表示して値を受け取りたい場合は、readコマンドを使います。
read シェル変数名
プロンプトから値を受け取るシェルスクリプトは、以下のようになります。
echoコマンドに-nオプションを付けることによって、プロンプトを改行しないようにしています。
また、3行目の末尾に書かれている「>&2」は、少し難しくなりますが標準出力を標準エラー出力に向けるという意味です。
「>&2」は書かなくても動作しますが、シェルではプロンプトを標準エラー出力に書き出すことになっています。
1 2 3 4 5 |
#!/bin/bash echo -n "値を入力してください => " >&2 read val echo "入力内容:$val" |
実行例
$ input.sh
値を入力してください => ABC
入力内容:ABC
メモ
UNIX系OS(Linux含む)はファイルディスクリプタという入出力概念があります。
ファイルディスクリプタは整数の0から始まります。
標準入力は0、標準出力は1、標準エラー出力は2となります。
値は空白で区切ることによって、複数渡すこともできます。
1 2 3 4 5 6 7 |
#!/bin/bash echo -e "値を入力してください => " >&2 read val1 val2 val3 echo "入力内容1:$val1" echo "入力内容2:$val2" echo "入力内容3:$val3" |
用意したシェル変数以上の値が入力された場合は、最後のシェル変数に残りの値がまとめて代入されます。
実行例
$ input2.sh
値を入力してください => dog cat mouse etc
入力内容1:dog
入力内容2:cat
入力内容3:mouse etc