linux - 回显到文件时错误重定向到输出流失败。为什么?

标签 linux bash shell unix

<分区>

res=`echo "hello" > /home/directory/folder1/xxx.txt 2>&1`

/home/directory/folder1/xxx.txt: 权限被拒绝

echo $res

空行

我希望错误存储在变量 res 中,为什么它没有被存储以及如何将错误存储在变量中?

最佳答案

您的错误来自shell,而不是来自命令,因此您必须重定向shell 的输出流,例如,像这样:

$ res=$(bash -c 'echo "hello" > /home/directory/folder1/xxx.txt' 2>&1)
$ echo $res
bash: /home/directory/folder1/xxx.txt: No such file or directory

实际上,存在创建子 shell 的更好语法:

$ res=$((echo "hello" > /home/directory/folder1/xxx.txt) 2>&1)
$ echo $res
bash: /home/directory/folder1/xxx.txt: No such file or directory

关于linux - 回显到文件时错误重定向到输出流失败。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41829940/

相关文章:

php - 从 linux 中使用 php 运行外部命令

linux - shell 脚本 -o 操作不起作用

php - 在 Linux 上使用 Linux 屏幕 session 与 PHP

linux - 在 Asterisk 中同时播放和录制

java - 在 Java 中读取 Excel 中的值,Windows 与 Linux 的问题

linux - manageprofiles.sh 无法创建 DEPLOYMENT MANAGER

linux - 使用 bash 脚本检查时间戳是否在特定范围内

linux - 在 linux 中替换文件中的单引号和双引号

bash - 子外壳和并行处理