Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops zsh进程文件脚本_Loops_Unix_Zsh - Fatal编程技术网

Loops zsh进程文件脚本

Loops zsh进程文件脚本,loops,unix,zsh,Loops,Unix,Zsh,我正试图让这个过程包含许多文件,但我不想看到它,所以我不必监视它 #!/usr/local/bin/zsh X=${1-20} for (( N=1; N<=X; N++ )); do for p in *.xml; do curl -X POST -H "Content-Type:application/xml" -d "@${p}" "https://url /postAPI" > "post_${p}"

我正试图让这个过程包含许多文件,但我不想看到它,所以我不必监视它

#!/usr/local/bin/zsh
X=${1-20}
for (( N=1; N<=X; N++ )); do
        for p in *.xml; do
                    curl -X POST -H "Content-Type:application/xml"  -d "@${p}" "https://url /postAPI" > "post_${p}"
                        sleep 1
                done
        done
#/usr/local/bin/zsh
X=${1-20}
对于((N=1;N“post_${p}”
睡眠1
完成
完成
在做/work.sh 5时,这将永远循环

什么导致了内循环

根据下面的评论进行编辑

/tmp/tmp.KeFYeM9Z % ls -l
total 4
-rwxr-xr-x  1 naes  wheel  218 Nov 20 14:42 work.sh

#!/usr/local/bin/zsh
X=${1-20}
for (( N=1; N<=X; N++ )); do
        for p in /tmp/tmp.u6RnKaJ3/*.xml; do
                    curl -X POST -H "Content-Type:application/xml"  -d "@${p}" "https://url /postAPI"
                        sleep 1
                done
        done
/tmp/tmp.KeFYeM9Z%ls-l
总数4
-rwxr-xr-x 1 naes车轮218 11月20日14:42 work.sh
#!/usr/local/bin/zsh
X=${1-20}

对于((N=1;N您正在写入您正在读取的同一个目录。因此,在读取xml文件的同时,您正在写入xml文件,使其基本上永远循环。虽然它不是一个真正的无限循环,但它是一个非常大的循环

假设您有10个文件,在这种情况下,您将得到以下结果:

N=1: |p| = 100
N=2: |p| = 200
N=3: |p| = 400
N=4: |p| = 800
N=5: |p| = 1600
所以…它呻吟得很快

这应该可以做到:

#!/usr/local/bin/zsh

X=${1-20}
OUTPUT_DIR=/tmp/output/
mkdir -p $OUTPUT_DIR

cd /tmp/tmp.u6RnKaJ3
for (( N=1; N<=X; N++ )); do
    echo "Attempt $N"

    for p in *.xml; do
        curl -X POST -H "Content-Type:application/xml"  -d "@${p}" "https://url /postAPI" > "${OUTPUT_DIR}post_${p}"
        sleep 1
    done
done
!/usr/local/bin/zsh
X=${1-20}
OUTPUT_DIR=/tmp/OUTPUT/
mkdir-p$OUTPUT\u DIR
cd/tmp/tmp.u6RnKaJ3
对于((N=1;N“${OUTPUT\u DIR}post\u${p}”
睡眠1
完成
完成

您正在写入的目录与正在读取的目录相同。因此,在读取xml文件的同时,您正在写入xml文件,这使得它实际上永远循环。虽然它不是一个真正的无限循环,但它是一个非常大的循环

假设您有10个文件,在这种情况下,您将得到以下结果:

N=1: |p| = 100
N=2: |p| = 200
N=3: |p| = 400
N=4: |p| = 800
N=5: |p| = 1600
所以…它呻吟得很快

这应该可以做到:

#!/usr/local/bin/zsh

X=${1-20}
OUTPUT_DIR=/tmp/output/
mkdir -p $OUTPUT_DIR

cd /tmp/tmp.u6RnKaJ3
for (( N=1; N<=X; N++ )); do
    echo "Attempt $N"

    for p in *.xml; do
        curl -X POST -H "Content-Type:application/xml"  -d "@${p}" "https://url /postAPI" > "${OUTPUT_DIR}post_${p}"
        sleep 1
    done
done
!/usr/local/bin/zsh
X=${1-20}
OUTPUT_DIR=/tmp/OUTPUT/
mkdir-p$OUTPUT\u DIR
cd/tmp/tmp.u6RnKaJ3
对于((N=1;N“${OUTPUT\u DIR}post\u${p}”
睡眠1
完成
完成

您正在写入的目录与正在读取的目录相同。因此,在读取xml文件的同时,您正在写入xml文件,这使得它实际上永远循环。虽然它不是一个真正的无限循环,但它是一个非常大的循环

假设您有10个文件,在这种情况下,您将得到以下结果:

N=1: |p| = 100
N=2: |p| = 200
N=3: |p| = 400
N=4: |p| = 800
N=5: |p| = 1600
所以…它呻吟得很快

这应该可以做到:

#!/usr/local/bin/zsh

X=${1-20}
OUTPUT_DIR=/tmp/output/
mkdir -p $OUTPUT_DIR

cd /tmp/tmp.u6RnKaJ3
for (( N=1; N<=X; N++ )); do
    echo "Attempt $N"

    for p in *.xml; do
        curl -X POST -H "Content-Type:application/xml"  -d "@${p}" "https://url /postAPI" > "${OUTPUT_DIR}post_${p}"
        sleep 1
    done
done
!/usr/local/bin/zsh
X=${1-20}
OUTPUT_DIR=/tmp/OUTPUT/
mkdir-p$OUTPUT\u DIR
cd/tmp/tmp.u6RnKaJ3
对于((N=1;N“${OUTPUT\u DIR}post\u${p}”
睡眠1
完成
完成

您正在写入的目录与正在读取的目录相同。因此,在读取xml文件的同时,您正在写入xml文件,这使得它实际上永远循环。虽然它不是一个真正的无限循环,但它是一个非常大的循环

假设您有10个文件,在这种情况下,您将得到以下结果:

N=1: |p| = 100
N=2: |p| = 200
N=3: |p| = 400
N=4: |p| = 800
N=5: |p| = 1600
所以…它呻吟得很快

这应该可以做到:

#!/usr/local/bin/zsh

X=${1-20}
OUTPUT_DIR=/tmp/output/
mkdir -p $OUTPUT_DIR

cd /tmp/tmp.u6RnKaJ3
for (( N=1; N<=X; N++ )); do
    echo "Attempt $N"

    for p in *.xml; do
        curl -X POST -H "Content-Type:application/xml"  -d "@${p}" "https://url /postAPI" > "${OUTPUT_DIR}post_${p}"
        sleep 1
    done
done
!/usr/local/bin/zsh
X=${1-20}
OUTPUT_DIR=/tmp/OUTPUT/
mkdir-p$OUTPUT\u DIR
cd/tmp/tmp.u6RnKaJ3
对于((N=1;N“${OUTPUT\u DIR}post\u${p}”
睡眠1
完成
完成

那么你是说只需将输出保存在脚本所在的目录之外?它到子目录的位置是什么?/tmp/tmp.u6RnKaJ3就是我现在所在的位置。
%./work.sh 1./work.sh:5:拒绝权限:/tmppost_9713171.xml./work.sh:5:拒绝权限:/tmppost_973805.xml./work.sh:5:拒绝权限:/tmppost_9819880.xml./work.sh:5:权限被拒绝:/tmppost_post9713171.xml
即使我创建了一个新的tmp目录,将脚本、cd复制到该目录,将其修改为在以前的目录中运行,它也会毫无中断地循环。@RegisteredUser:试试我添加的脚本,你是说只需将输出保存到脚本所在的目录之外?它会转到什么子目录?/tmp/tmp.u6RnKaJ3就是我现在的位置。
%./work.sh 1./work.sh:5:拒绝许可:/tmppost_9713171.xml./work.sh:5:拒绝许可:/tmppost_973805.xml./work.sh:5:拒绝许可:/tmppost_post_9713171.xml
即使我创建了一个新的tmp目录,也要将脚本、cd复制到该目录,修改它要在上一个目录中运行,循环不会中断。@RegisteredUser:试试我添加的脚本,你是说只需将输出保存在脚本所在的目录之外?它将如何转到子目录?/tmp/tmp.u6RnKaJ3就是我现在所在的位置。
%./work.sh 1./work.sh:5:拒绝权限:/tmppost_9713171.xml./work.sh:5:permission denied:/tmppost_973805.xml./work.sh:5:权限被拒绝:/tmppost_9819880.xml./work.sh:5:权限被拒绝:/tmppost_post_9713171.xml
即使我创建了一个新的tmp目录,将脚本、cd复制到该目录,将其修改为在以前的目录中运行,它也会毫无中断地循环。@RegisteredUser:尝试我添加的脚本,这样你就可以说了在脚本所在的目录外保存输出?它将如何进入子目录?/tmp/tmp.u6RnKaJ3就是我现在所在的位置。
%./work.sh 1./work.sh:5:拒绝权限:/tmppost_9713171.xml./work.sh:5:拒绝权限:/tmppost_973805.xml./work.sh:5:拒绝权限:/tmppost_9819880.xml./work.sh:5:拒绝权限:/tmppost\ust_9713171.xml
即使我创建了一个新的tmp目录,将脚本、cd复制到该目录,将其修改为在以前的目录中运行,它也会毫无中断地循环。@RegisteredUser:尝试我添加的脚本