Nohup不适用于bash for loop

问题描述

我一直在尝试将nohup与bash一起用于循环,并且偶然发现了这篇帖子here,它很有帮助,并给了我一个主意,但我的命令仍然无法正常工作。我现在所拥有的看起来像:

nohup sh -c 'for i in {0..9}; do spark-submit --class some.Code /some/Jar.jar --input_path /some/path/part-001"$i"* > test_log.log; done' &

当我运行此命令时,作业失败,但有以下例外:输入路径不存在,并显示以下路径:

/some/path/part-001{0..9}*

如何获取此值以将$i替换为i的实际值而不是字符串{0..9}

谢谢

解决方法

IMHO sh不是您系统上bash的别名。 如果您这样启动:

nohup bash -c 'for i in {0..9}; do spark-submit --class some.Code /some/Jar.jar --input_path /some/path/part-001"$i"* > test_log.log; done' &

它将开始工作。 据我所记得,使用的语法是bash自己的语法。

Ps:但是我不确定,是否需要$ i周围的标记。我更喜欢$ {i}形式。

编辑:如果在您的系统上sh是破折号的别名,那么您可以使用此名称:

nohup sh -c 'for i in `seq 0 9`; do spark-submit --class some.Code /some/Jar.jar --input_path /some/path/part-001"$i"* > test_log.log; done &'

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...