nohup 中的 for 循环

nohup 中的 for 循环

我正在尝试运行同时运行 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

相关内容