8개의 for 루프를 동시에 실행하는 bash 스크립트를 실행하려고 합니다.
아래 for 루프 중 하나
for i in 00 01 02 03 04 ; do cat $INDIR/sys*$1.$i*csv | \
awk -F '\xac' 'BEGIN{OFS=";";} ($4 == 10) { $1=$1; print }'> $OUTDIR/$1_$i.csv
그래서 다음 구문으로 변환하여 실행했습니다.nohup
nohup bash -c 'for i in 00 01 02 03 04; do cat $INDIR/rti*$1.$i*csv| \
awk -F \'\\xac\' \'BEGIN{OFS=\";\";} ($4==10) { $1=$1; print }\'>$OUTDIR/$i.csv;done' &
하지만 다음과 같은 오류가 발생합니다
test.sh: line 9: syntax error near unexpected token `('
test.sh: line 9: `nohup bash -c 'for i in 00 01 02 03 04; do cat $INDIR/rti*$1.$i*csv|awk -F \'\\xac\' \'BEGIN{OFS=\";\";} ($4==10) { $1=$1; print }\'>$OUTDIR/$i.csv;done' & '
나는 또한 다음 코드 변경을 시도했습니다.
nohup sh -c '<code>' nohup /bin/bash -c '<code>' \'\xac\'
그러나 아무런 진전이 없었습니다.
그러나 내 for 루프는 nohup
.
답변1
코드를 두 개의 스크립트로 분할하면 더 쉽습니다(읽기: 읽고 유지하기가 더 쉽습니다). 하나는 실제 함수를 실행하고 다른 하나는 실행합니다. 후자의 샘플 코드:
for i in 00 01 02 03 04; do
nohup /path/to/workerScript.sh ${i}
done
논리를 단일 스크립트로 유지하려는 경우에도 다음 방법을 사용할 수 있습니다.
if [ $# -eq 0 ]; then
for i in 00 01 02 03 04; do
nohup $0 ${i}
done
exit 0
fi
# Rest of the logic follows