我们如何检查shell脚本的命令行参数是否在引号内?

时间:2012-05-09 11:53:43

标签: shell batch-file

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

答案 1 :(得分:1)

使用bash,试试这个:

if [[ -z "$1" ]]; then
    echo ERROR ! The username must be within quotes.
fi