如何让bash脚本询问你是否要执行下一段(部分)?

如何让bash脚本询问你是否要执行下一段(部分)?

当我执行 bash 脚本时。鉴于我有

set -x

我会目视观察正在发生的事情。但在某些部分,我希望它停止并询问我是否仍想继续执行下一行。

我知道:

set -e

这只是确保 bash 脚本出错时退出,但我不想使用它。相反,我只想划分我的代码,让 bash 脚本时不时地询问我是否应该继续。

答案1

您可以用于read交互式脚本。

例如:

echo "Do you want to continue?(yes/no)"
read input
if [ "$input" == "yes" ]
then
echo "continue"
fi

您可以根据input提供的 if 条件进一步执行。

编辑

如果您想在多个地方使用它,那么您可以创建一个函数并在需要用户干预的任何地方调用。

答案2

要获得继续的确认,read内置可以使用bash。但是,如果您想对每一行都执行此操作,那么您不想在每个需要的地方插入多于一行的内容。

另外,你不想输入完整答案程序是否应该继续 - 例如“是”或“y”;按回车键应该足够继续下去;并停止,Ctrl+C很简单也很清楚。

但是现在您将所有这些确认检查添加到您的代码中 - 如果您只想运行它几次怎么办?无需检查?好的,如果能够的话就好了把它关掉。我们为此使用一个变量。

你可以写一个功能可以在中间的行中添加以下内容:

#!/bin/bash

#useConfirm=true - comment out the line below like this to disable confirmation
useConfirm=true

confirm() {
   [ "$useConfirm" = true ] && read -p "Proceed? (Enter) - (^C to abort)"
}

echo a
confirm
echo b
echo c
confirm
echo d

相关内容