Shell 脚本没有将输出发送到文件

Shell script not sending output to file

每当我 运行 在终端中执行以下命令时,stderrstdout 就会像我期望的那样发送到 output.txt 文件。

/usr/bin/time -v ls -al &> output.txt

但是,每当我将此命令放入 shell 脚本时,输出显示在终端中,而 output.txt 的输出为空。这是等效的脚本:

#!/bin/sh
/usr/bin/time -v ls -al &> output.txt
exit

我运行脚本使用./script.sh。为什么这个脚本的行为不像我期望的那样?我已尝试将命令替换为:{ /usr/bin/time -v ls -al ; } &> output.txt,但这也不起作用。

在此先感谢您的帮助!

您正在使用 sh 作为脚本的解释器,它不支持运算符 &>。当然,您正在使用 bash 来测试您的命令,这就是它在脚本之外工作的原因。

我认为这个对另一个问题的回答可能会有一些帮助: https://askubuntu.com/a/625230