一个简单的if / else bash脚本,它对用户的是/否输入做出反应?

时间:2012-07-07 09:08:47

标签: bash shell

我基本上有一个bash脚本,它连续执行5个命令。我想添加一个逻辑,询问我“你想执行命令A”,如果我说YES,执行命令,否则脚本跳转到另一行,我看到提示“你想执行命令B” 。

脚本非常简单,看起来像这样

echo "Running A"
commandA &
sleep 2s;
echo "done!"

echo "Running B"
commandB &
sleep 2s;
echo "done!"
...

2 个答案:

答案 0 :(得分:16)

使用read内置来获取用户的输入。

read -p "Run command $foo? [yn]" answer
if [[ $answer = y ]] ; then
  # run the command
fi

如果您要多次执行此操作,请将上述内容放入function中,该命令会将命令(可能还有提示符)作为参数。

答案 1 :(得分:1)

你想要Bash read builtin。您可以使用隐式 REPLY 变量在循环中执行此操作,如下所示:

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