这里的目标是在我按CTRL + D时在终端上直接在STDOUT上显示结果,首先,我尝试了很多事情来找到解决方案。
因此,当我执行./myprog.sh
之类的程序时,它会等待回车,因此我们可以编写:
bob
cookie
我们按下CRTL + D,我想要这个结果:
bob
cookie
boy
dog
我的代码是:
while :
do
read INPUT_STRING ||break
case $INPUT_STRING in
bob)
echo "boy"
;;
alicia)
echo "girl"
;;
cookie)
echo "dog"
;;
bye)
break
echo " "
;;
*)
echo "unknown"
;;
esac
done
在终端中写了很多不同的东西后如何显示内容?
答案 0 :(得分:0)
让我们从基础开始,什么是 Ctrl + D ?此键组合类似于文件结尾。这不是您可以捕获的信号,而是与文件有关的东西。因此,如果您希望在按下时进行操作 Ctrl + D ,您实际上是在说:
我想在
/dev/stdin
上创建一个文件,将其读入内存,然后对其执行各种操作。
awk中的示例为:
awk '{a[NR]=$0}END{for(i=1;i<=NR;++i) print i,a[i]}' -
在这里,它将完整的“文件”读入内存,当您按 Ctrl + D 时,您告诉awk已到达EOF并执行{{1 }}语句,先打印行号,再打印行。脚本末尾的END
的简写。
现在,如果您想在shell中执行类似的操作,请说bash使其简单,您可以执行以下操作。
通过将完整的输入存储到数组或临时文件中,将其输入到内存中。按 Ctrl + D
随后处理输入。
这看起来像这样:
/dev/stdin