最近缺CSDN分下载一个文档,去问题区逛了下,不是专业开发也没啥分好赚的。看到shell里有个问题,提问者想要linux自动执行脚本和收集原本打印的结果,他现有的一个脚本需要输入参数进行交互,其实就是一个shell的交互问题,于是我给了一个回答:
sh xx.sh >>result.txt << EOF
2
3
EOF
我自己写了个小脚本read并且echo,运行正常。提问者回复我read命令的prompt部分没有打印出来。
调整脚本read后面加上-p,测试一下,果然-p的提示信息没有追加到文件中。
难道不在标准输出中,反而在标准错误中?
果断改成这样:
sh xx.sh >>result.txt 2>&1 << EOF
2
3
EOF
测试一下,好吧,还是没有。那这个-p后面的提示信息到底跑哪去了?
百度 read -p基本上没人关注这个提示信息到底放到哪了,又翻不了墙,最后在一篇文章中看到了如下描述:
-p 用 |& (管道,& 的记号名称)读取由 Korn shell 运行的进程的输出作为输入
试试:
sh xx.sh >>result.txt |&>&1 << EOF
2
3
EOF
OK!read -p的提示信息正确追加到result.txt中了!
原来read -p的提示信息放到|&里面了。