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

相关内容