1

次のバッチコマンドに対応するシェルコマンドを取得する方法:

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

2 に答える 2

2

Bashの引用符は構文であり、リテラルではないため、スクリプトではまったく表示されません。スクリプトがパラメータを受け取るまでに引用符が事実上なくなるため、スクリプトがパラメータが引用されているかどうか、またはどのように引用されているかをスクリプトが知る方法はまったくありません。

パラメータに空白またはBashでの引用を「受け入れやすい」その他の特殊文字が含まれているかどうかを確認する場合、「Bashで引用された」文字列が元の文字列と等しいかどうかを確認できます。

[[ "$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 に答える