1

我在 test.sh 中写了这样的脚本:

#!/bin/bash
CPPCHECK_PATH=haha
SRC_TMP_PATH=asdf
xmlPath=test
cmd="$CPPCHECK_PATH/cppcheck $SRC_TMP_PATH --xml 2>$xmlPath"
`$cmd` 

我运行“sh -x test.sh”,控制台输出为:

sh -x test.sh 
+ CPPCHECK_PATH=haha
+ SRC_TMP_PATH=asdf
+ xmlPath=test
+ cmd='haha/cppcheck asdf --xml 2>test'
+ echo haha/cppcheck asdf --xml '2>test'
haha/cppcheck asdf --xml 2>test
++ haha/cppcheck asdf --xml '2>test'

为什么'2>test'周围有一对单引号?由于单引号导致脚本无法正常运行。有谁知道?

4

1 回答 1

2

单引号告诉您它被用作参数而不是重定向后跟文件名,因为您不能以这种方式在变量中包含重定向。从变量中删除重定向并单独执行。

于 2013-11-06T08:29:36.200 回答