14

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

脚本很简单,看起来像这样

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

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

2 回答 2

19

使用read内置函数从用户那里获取输入。

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

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

于 2012-07-07T09:21:27.677 回答
1

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

于 2012-07-07T09:25:57.143 回答