问题描述
我一直在尝试将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 &'