【问题标题】:strange single quotes in shell scriptshell脚本中奇怪的单引号
【发布时间】:2013-11-06 08:24:53
【问题描述】:

我在 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'周围有一对单引号?由于单引号导致脚本无法正常运行。有谁知道吗?

【问题讨论】:

    标签: shell


    【解决方案1】:

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

    【讨论】:

    • 我没听清楚。你的意思是我应该只写:$CPPCHECK_PATH/cppcheck $SRC_TMP_PATH --xml 2>$xmlPath,不要将它设置为变量cmd?
    • 将重定向移出变量。还有read this.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多