bsub 不与 while 循环一起使用

bsub 不与 while 循环一起使用

我尝试运行以下命令,但收到错误:

syntax error near unexpected token `do'

命令:

bsub -q XXX -P YYY -J ZZZ -R "rusage[mem=10000,scr=5000]" -R "span[hosts=1]" -n 2 -o lsf.out -e lsf.er  while read  -r line; dofilename=$(echo $line | awk '{print $1}'); content=$(echo $line | cut -d ' ' -f 2-); echo "$content" | tr ' ' '\n' > "$filename.txt"; done < input.txt

以下命令运行成功:

while read  -r line; dofilename=$(echo $line | awk '{print $1}'); content=$(echo $line | cut -d ' ' -f 2-); echo "$content" | tr ' ' '\n' > "$filename.txt"; done < input.txt

但是当加入选项时相同的命令bsub,则失败。

答案1

您需要在 之前有一个分隔符while

busb ... -o lsf.out -e lsf.er  while read ...

应该成为

busb ... -o lsf.out -e lsf.er ; while read ...

dofilename=...确实应该是do filename=...

==

它对我使用 bash 当然有效。

我没有你的 bsub 命令,也没有你的 input.txt 文件,所以......

alias bsub=true
cat >input.txt
foo
bar
baz
^D

然后

$ bsub -q XXX -P YYY -J ZZZ -R "rusage[mem=10000,scr=5000]" -R "span[hosts=1]" -n 2 -o lsf.out -e lsf.er ; while read  -r line; do filename=$(echo $line | awk '{print $1}'); content=$(echo $line | cut -d ' ' -f 2-); echo "$content" | tr ' ' '\n' > "$filename.txt"; done < input.txt
$

执行成功。

请注意,分号和“do filename”空格都是必需的。

相关内容