-bash: 意外标记“do”附近的语法错误

-bash: syntax error near unexpected token `do'

我在 Mac 终端上执行以下操作:

sudo for i in `seq 0 9`; do nohup my_command > log_$i.txt & done

但我收到以下错误:

-bash: syntax error near unexpected token `do'

有什么问题,我该如何解决?

P.S.

我测试了这里和这里的一些人的建议:

1)

(base) user@SERVER:/directory$ sudo for i in `seq 0 9`; do nohup my_command > log_$i.txt &; done

-bash: syntax error near unexpected token `do'

2)

(base) user@SERVER:/directory$ sudo for i in `seq 0 9`; do nohup my_command > log_$i.txt ; done

-bash: syntax error near unexpected token `do'

3)

(base) user@SERVER:/directory$ sudo for i in `seq 0 9`; do nohup my_command > log_$i.txt done

-bash: syntax error near unexpected token `do'

4)

(base) user@SERVER:directory$ sudo bash -c for i in `seq 0 9`; do nohup my_command > log_$i.txt & done

-bash: syntax error near unexpected token `do'

运行 通过 sudo 的 for 不起作用,因为 sudo 期望 命令 。您可以通过 bash:

代替 运行 循环
sudo bash -c 'for i in {0..9}; do nohup command > log_$i.txt & done'

您不需要使用 seq 命令,因为 bash 有 {0..9} 来支持 "range" 循环。

有关 & 的更多信息,请参见 bash job control(它将 "job" - 您 运行 的命令 - 在后台)。