我基本上有一个bash脚本,它连续执行5个命令。我想添加一个逻辑,询问我“你想执行命令A”,如果我说YES,执行命令,否则脚本跳转到另一行,我看到提示“你想执行命令B” 。
脚本非常简单,看起来像这样
echo "Running A"
commandA &
sleep 2s;
echo "done!"
echo "Running B"
commandB &
sleep 2s;
echo "done!"
...
答案 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字符时才执行命令。希望有所帮助!