开门见山,我有一个脚本,read
在打印最终输出之前将用户输入并交互提示,预计调用用户可以像这样获得最终输出:
AVAR=$(myscript arg1 arg2 arg3)
所以我在 myscript 中想出了一个 dirty[?] hack[?] :
# ... blah ...
echo -n "A prompt for the user " >> /dev/stderr
read SOMEVAR >> /dev/null
# ... other stuff ...
printf "Results\t$RESULT\n"
这是使用 stderr 的某种邪恶的、不好的做法还是我只是足智多谋地狡猾?请原谅我的无知,我是100%自学的,所以我使用演绎推理,即调用者变量中我不想要的所有内容都必须重定向,但在提示的情况下,它仍然需要显示, stderr 是我能想到的。
答案1
解决:是的,这是不好的做法。感谢@SatoKatsura 填补空白。
正确的做法是:
# ... blah ...
echo -n "A prompt for the user " >&2
read SOMEVAR >> /dev/null
# ... other stuff ...
printf "Results\t$RESULT\n"
这是便携式的并且更好、更安全的练习。