我想創建一個腳本,以便將文件分解爲24.「infoband.dat」包含我想繪製的24個樂隊的數據,但不是分別寫每個樂隊,它首先寫出每個樂隊的所有第一點,然後是所有第二點,等等。 我的腳本應該開始讀取文件的每一行,而一次數到24,直到文件結尾。在for循環的第一次迭代中,它將創建一個文件,其中包含所有24行塊中的所有第一行,並且它可以成功完成。但第二次迭代甚至沒有開始。什麼是打破循環?bash腳本:for循環中斷第一次迭代沒有解釋
1 #!/bin/sh
2 grep frequency band.yaml > infoband.dat
3 contadora=0
4 for i in {1..24} #loop to create the band file, 24 is the no. of bands
5 do
6 contadora=$((contadora+1))
7 contadorb=0
8 contadorc=0
9 while read line
10 do
11 contadorb=$((contadorb+1))
12 if [ $contadorb -eq 25 ]
13 then
14 contadorb=1
15 contadorc=$((contadorc+1))
16 fi
19 if [ $contadora -eq $contadorb ]
20 then
21 echo $contadora $contadorb $contadorc "$line" >> band_$contadora.dat
22 fi
23 done < infoband.dat
24 echo "file of the band " $contadora "is finished"
25 done
更新:我使用了不同的方法完成的代碼(變量contadorc是沒用的BTW):
1 #!/bin/sh
2 grep frequency band.yaml > infoband.dat
3 nband=24
4 contadorb=0
5 contadorc=0
6 while read line
7 do
8 contadorb=$((contadorb+1))
9 if [ $contadorb -eq $((nband+1)) ]
10 then
11 contadorb=1
12 contadorc=$((contadorc+1))
13 fi
14 echo " "$contadorb" "$line" punto_q $contadorc">> test_infoband.dat
15 done < infoband.dat
16 for i in `seq 1 $nband`
17 do
18 echo $i $nband
19 grep " $i " test_infoband.dat > banda_$i.dat
20 done
我只是想到了一種解決方法...雖然我很想知道爲什麼這個循環不起作用。 –
你不需要重新設置contradora,否則第19行將有像第25,26,27 ....第一個循環後的值。祝你好運。 – shellter