Bashでテスト読み取りを実行する

Bashでテスト読み取りを実行する

bashでこのステートメントを実行しようとしていますが、エラーが発生し続けます。

test [[ "$(read -p 'Install gtodo? ' R ; echo $R)" == "Y" ]] && (sudo apt-get install gtodo) || (echo "gtodo not installed")

正しい構文は何ですか?

答え1

問題は、あなたが両方を使用していることですtest[[

test "$(read -p 'Install gtodo? ' R ; echo $R)" = "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")

答え2

あなたがtest <expresion>書いたり[ <expresion> ]。あなたの場合、式を短くするためにreadbeforeを置き換えることもできます。test

read -p 'Install gtodo? ' R; test "$R"  == "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")

しかし、「Y」だけが肯定的な答えとして受け入れられます。次のように変更すると:

read -p 'Install gtodo? ' R; [ "$R"  == "Y" ] || [ "$R" == "y" ] && (sudo apt-get install gtodo) || (echo "gtodo not installed")

「Y」と「y」を肯定的な答えとして受け入れます。

関連情報