我试图在 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”作为肯定答案。