执行 bash 脚本循环而不退出错误

Execute bash script loop without exit on error

我想要做的是 运行 为一个文件夹中的每个数据集执行几个 hadoop 作业。我正在使用如下循环:

    hdfs dfs -ls | grep -o '[0-9]*x[0-9]*$'|while read line;
    do
    echo "Operator: Spark KMeans, Dataset: $line"
    ./bspark.sh spark_kmeans $line 6 20
    sleep 30s 
    done

部分作业可能会失败。出现错误是否可以继续下一行?

我能想到的一些事情:

  • 您的 while 循环正在使用 STDIN。我想知道 bspark.sh 是否也在使用 STDIN 并且可能正在使用您的输入。
  • bspark.sh 是否以某种方式终止了您的程序?
  • 你的 while 循环解析是按照你的想法做的吗?

您可以尝试几件事:

  • 在您的 bspark.sh 行前面放一个 echo。而不是实际执行 bspark.sh 查看命令的样子。这会让您了解脚本实际在做什么。

  • 使用 set -xv 打开 shell 调试。 -v 显示 shell 插入前的命令行,-x 显示 shell 插入后的命令行。您可以将 $PS4 设置为 $LINENO> 以在打印调试信息时查看行号。让您了解错误发生的位置。

    set +xv 关闭调试。我发现通过我的 shell 脚本将它们添加到不同的地方以查看发生了什么是很有用的。