1

如何为以下批处理命令获取相应的 shell 命令:

    if %1 EQU %~1 (
        echo ERROR ! The username must be within quotes.
    )
4

2 回答 2

2

Bash 中的引号是句法的,而不是字面的,所以它们在脚本中根本看不到。AFAIK 绝对没有办法让脚本知道参数是否或如何被引用,因为在脚本接收参数时任何引号都有效地消失了。

如果您想检查参数是否包含空格或其他特殊字符,使其“适合”在 Bash中引用,您可以检查“Bash-quoted”字符串是否等于原始字符串:

[[ "$1" = "$(printf %q "$1")" ]]

如果你想检查参数是否被字面引用,你可以做一个简单的检查,比如

[[ "$1" =~ ^\".*\"|\'.*\'$ ]]

也就是说,你为什么需要这个?

于 2012-05-09T13:41:34.037 回答
1

使用 bash,试试这个:

if [[ -z "$1" ]]; then
    echo ERROR ! The username must be within quotes.
fi
于 2012-05-09T12:07:30.107 回答