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" 공백이 모두 필요합니다.

관련 정보