【发布时间】:2021-05-22 06:30:16
【问题描述】:
我有以下几点:
a=$(grep pattern file_not_exist)
echo $a. #turns out a is empty
但我可以看到 grep 抱怨:grep: file_not_exist: No such file or directory.
为什么 grep 的错误信息没有赋值为 shell 变量 a 的值?而如果我们想要这种重定向,该怎么做呢?
我是一个壳牌新手,刚刚开始。似乎 stdout 输出分配给了 shell 变量。你能指出我描述这个的文档吗?
谢谢!
【问题讨论】:
-
您当然可以确保 stdout 和 stderr 最终位于同一个变量中,正如 RamanSailopal 解释的那样。您还可以通过一些努力将 stdout 和 stderr 放入不同的变量中。但你为什么想要?在脚本中,您只需要知道是否存在错误(例如,提前终止脚本),错误消息应该立即显示给用户,或者被丢弃。在这两种情况下,您都不需要在变量中使用它。
-
顺便说一句,变量赋值在 PARAMETERS 部分的 bash 手册页中进行了描述。 REDIRECTION 部分描述了重定向。