关于shell:一个简单的if/else bash脚本,它对用户的yes/no输入做出反应?

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!"
...


使用read内置技术从用户那里获得输入。

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字符时才执行该命令。希望有帮助!