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



我基本上有一个bash脚本,它可以连续执行5个命令。我想添加一个逻辑,询问我"Do you want to execute command a",如果我说"是",则执行该命令,否则脚本跳到另一行,我会看到提示"Do you want to execution command B"。

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

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

使用read内置程序从用户处获取输入。

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

如果要多次执行此操作,请将以上内容放入一个函数中,该函数将命令(可能还有提示)作为参数。

您想要Bash-read内置。您可以使用隐式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字符时才执行该命令。希望能有所帮助!

相关内容

最新更新