我应该如何重定向带有argument的命令上的stderr



我有一个shell脚本要做:./xxx.sh -a 1 -b 2 -c 3 2>/dev/null

然而,2被视为自变量

与以下命令类似echo test 2>aaa.txt

我的意图是将strerr指向aaa.txt,然而,我得到了:

cat aaa.txt
test 2

正如您所看到的,2也被视为一个自变量。我应该如何重定向带有参数的命令上的stderr?

我认为您正在使用cshtcsh,因为2>重定向不适用于csh或tcsh。

使用chsh命令将shell更改为/bin/sh或/usr/local/bin/bash,以便使用2>样式重定向。注意:不要将root的shell更改为/usr/local/bin/bash

csh和tcsh不能分别重定向标准out和error,但是>amp;将组合输出重定向到一个文件。

然后您可以尝试使用相同的命令或使用";((";如( your command ) 2> /dev/null

或者你也可以用两个贝壳来做。

示例:csh -c 'SOME_COMMAND 1>/dev/null' |& tee file.txt

最新更新