スクリプトファイルから入力を受け取る必要があります。
$ ./script < input.txt
私のスクリプトは無限のwhileループを実行し、を押すだけで終了できますctrl-d
。ctrl-d
script.shが見つかったら自動的に終了するようにinput.txtにどのように追加しますか?
while true;
do
echo 'blah blah'
read i # takes from file
case $i in
a )
echo 'blah blah'
read j #takes from file
.......
*) echo 'invalid option'
continue
;;
esac
done
このループは、ユーザーがctrl-Dを押すか、input.txtの終わりに達するまで続行する必要があります。
答え1
read
状況に応じて、以下を使用してくださいwhile
。
while read -r a; do
echo 'blah blah'
case "$a" in
a)
echo 'blah blah'
read -r b
echo "line: $b"
;;
*)
echo 'invalid option'
continue
;;
esac
done
ファイルの終わりに達すると、ループは終了します。
答え2
スクリプトが最初に何をしているのかを見てみると良いでしょう。このようなファイルを読み取るときは、次のようにファイルの内容を読み取ることができます。しかし、リング:
while read p; do
echo $p
done <&0
このループはファイルの1行を変数に割り当てます。血すぐに。ループの末尾にあるリダイレクト演算子に注意してください。これは標準入力をリダイレクトします。