我有一个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?
我认为您正在使用csh或tcsh,因为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