sh shell:如何在引号内使用 $1

sh shell:如何在引号内使用 $1

我正在使用这段代码:

#!/bin/sh
if [ $# -lt 2 ]
then
    echo "wrong syntax"
    echo "ct_cmp.sh <label1> <label2> [<file_extension>]"
else
    if [ $# -eq 2 ]
    then
        cleartool find . -version 'lbtype($1) && \!lbtype($2)' -print
    fi
fi

但得到这个结果:

清除工具:

Error: Invalid query: "lbtype($1) && \!lbtype($2)"

答案1

单引号将防止参数扩展:

'lbtype($1) && \!lbtype($2)'

它应该与"'lbtype($1) && \!lbtype($2)'".

顺便说一句,我在处理 shell 脚本时的首选工具之一是使用 shellcheck 来验证它们:https://www.shellcheck.net/(也可在独立可执行文件中使用)。毫不奇怪,它会告诉你关于简单引用的完全相同的事情。

相关内容