Nohup不能正确地与bash for循环一起工作

Nohup不能正确地与bash for循环一起工作,bash,nohup,Bash,Nohup,我一直在尝试将nohup与bashforloop结合使用,我发现这篇文章很有帮助,给了我一个想法,但我的命令仍然不能正常工作。我现在看到的是: 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' & 运行此操作时,作业失败,出现以下异常:输

我一直在尝试将nohup与bashforloop结合使用,我发现这篇文章很有帮助,给了我一个想法,但我的命令仍然不能正常工作。我现在看到的是:

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的实际值而不是字符串
{0..9}
替换
$I


谢谢

在您的系统上,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是dash的别名,则可以使用:

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 &'

{0..9}
是bash语法。你不能用
sh
@Lety运行它,请不要让人们指向ABS“文档”。irc.freenode.org#bash专门用来阻止人们从TLDP中学习坏习惯。这可能会有帮助:像
${i}
中那样使用大括号,不会改变对引号的需要--
“${i}“
比单独的
${i}
更正确,正如
“$i”
比裸
$i
更正确。有关shellcheck警告,请参阅或wiki页面。