[英]For loop inside a bash script is not working with nohup
我有一個bash腳本,即
#!/bin/bash
for number in {1..20..1}
do
if [ $number = 1 ]
then
sed 's/seed=0/seed=100/' input > input2
mv input2 input
elif [ $number = 2 ]
then
mv output output1
sed 's/seed=100/seed=200/' input > input2
mv input2 input
elif [ $number = 3 ]
then
mv output output2
sed 's/seed=200/seed=300/' input > input2
mv input2 input
.....and so on.....
fi
./compiled_code <input > output
done
當我使用qsub提交我的bash腳本時,for循環和if語句起作用,但是當我使用nohup提交bash腳本時,for循環不起作用,它僅運行腳本一次,並且不會再次提交該腳本。 我不知道為什么 ? 任何人有什么主意嗎? 提前致謝。
這是一個重構,它刪除了重復的代碼,並使您的腳本與sh
兼容,這是一個很好的好處。
#!/bin/sh
while read num seed; do
sed "s/seed=0/seed=$seed/" input >"input$num"
./compiled_code <"input$num" > "output$num"
rm "input$num"
done <<____HERE
1 100
2 200
3 300
: etc
____HERE
如果看起來像您的種子值是完全可預測的,則for
循環的sh
兼容替代品是使用seq
類的外部實用程序(盡管這也不嚴格是POSIX)。
for num in $(seq 1 20); do
sed "s/seed=0/seed=${num}00/" input >"input$num"
./compiled_code <"input$num" > "output$num"
rm "input$num"
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.