shell脚本中奇怪的单引号
我在test.sh中编写了这样的脚本:shell脚本中奇怪的单引号,shell,Shell,我在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=tes
#!/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>测试”周围有一对单引号?由于单引号,脚本无法正常运行。有人知道吗?单引号是用来告诉您它被用作参数,而不是后跟文件名的重定向,因为您不能以这种方式在变量中包含重定向。从变量中删除重定向并单独执行。我没听清楚。你的意思是我应该写:$CPPCHECK\u PATH/CPPCHECK$SRC\u TMP\u PATH--xml2>$xmlPath,不要将其设置为变量cmd?将重定向移出变量。和。