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> ]
。あなたの場合、式を短くするためにread
beforeを置き換えることもできます。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」を肯定的な答えとして受け入れます。