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:尝试我添加的脚本