A simple if/else bash script which reacts to user's yes/no input?
本问题已经有最佳答案,请猛点这里访问。
我基本上有一个bash脚本,它一行执行5个命令。我想添加一个逻辑,它询问我"是否要执行命令A",如果我说是,则执行命令,否则脚本跳到另一行,我看到提示"是否要执行命令B"。
剧本很简单,看起来像这样
1 2 3 4 5 6 7 8 9 10 | echo"Running A" commandA & sleep 2s; echo"done!" echo"Running B" commandB & sleep 2s; echo"done!" ... |
使用
1 2 3 4 | read -p"Run command $foo? [yn]" answer if [[ $answer = y ]] ; then # run the command fi |
把上面的内容放到一个函数中,如果您要多次这样做的话,这个函数将把命令(可能还有提示)作为参数。
你想要bash read内置。您可以使用如下隐式回复变量在循环中执行此操作:
1 2 3 4 5 6 7 | for cmd in"echo A""echo B"; do read -p"Run command $cmd?" if [[ ${REPLY,,} =~ ^y ]]; then eval"$cmd" echo"Done!" fi done |
这将遍历所有命令,提示用户输入每个命令,然后仅当用户响应的第一个字母是y或y字符时才执行该命令。希望有帮助!