执行bash脚本循环时没有退出错误

时间:2015-02-25 12:09:58

标签: linux bash shell unix ubuntu

我要做的是为文件夹中的每个数据集运行几个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

有些工作可能会失败。如果发生错误,是否可以继续下一行?

1 个答案:

答案 0 :(得分:0)

我能想到的一些事情:

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

你可以尝试几件事:

  • echo放在bspark.sh行前面。而不是实际执行bspark.sh看看命令是什么样的。这将让您了解脚本实际上在做什么。
  • 使用set -xv打开shell调试。 -v在shell插入之前显示命令行,-x在shell混淆之后显示命令行。您可以将$PS4设置为\$LINENO>以查看打印调试信息时的行号。让您了解错误发生的位置。

    set +xv关闭调试。我发现通过我的shell脚本将它们添加到各个地方以查看正在进行的操作是有用的。