我必须从脚本文件中获取输入:
$ ./script < input.txt
我的脚本运行一个无限的 while 循环,您只能通过按 来退出它ctrl-d
。如何添加ctrl-d
到input.txt,以便script.sh遇到它时自动终止。
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
该循环将文件的一行分配给一个变量p立刻。请注意循环末尾的重定向运算符 - 它重定向标准输入。