これは私の愚かさかもしれません。はい/いいえ、真/偽の応答をBashスクリプト内で受け入れたい:
test.sh
#!/bin/bash
ARGUMENT=$1
echo User passed in $ARGUMENT
OPTARG=${ARGUMENT:0:1}
if [[ "$OPTARG" -eq 0 ]] || [[ "${OPTARG^^}" == "N" ]]; then
echo Decline
elif [[ "$OPTARG" -eq 1 ]] || [[ "${OPTARG^^}" == "Y" ]]; then
echo Accept
else
echo Invalid argument
fi
以下にいくつかのサンプル結果を示します。
./test.sh 0
User passed in 0
Decline
./test.sh 1
User passed in 1
Accept
./test.sh 2
User passed in 2
Invalid argument
./test.shいいえ
User passed in No
Decline
今、切り株。なぜ[[ "${OPTARG^^}" == "N" ]]文字列に対してtrueを返すのですか?
./test.shはい
User passed in Yes
Decline
./test.sh ThisShouldNotMatch
User passed in ThisShouldNotMatch
Decline
これを引用するとどうなりますか?OPTARG = "$ {ARGUMENT:0:1}"
—
mikeserv 2014年
気にしないで。Goldilocksは正しいです。
—
mikeserv 2014年