簡體   English   中英

Shell腳本執行循環

[英]shell scripting do loop

對不起,我是unix的新手,但是我想知道是否仍然可以將以下代碼放入循環中。 例如,文件名每次都會從1更改為50

我的劇本是

cut -d ' ' -f5- cd1_abcd_w.txt > cd1_rightformat.txt ;
sed 's! \([^ ]\+\)\( \|$\)!\1 !g' cd1_rightformat.txt ;
sed -i 's/ //g' cd1_rightformat.txt; 
cut -d ' ' -f1-4 cd1_abcd_w.txt > cd1_extrainfo.txt ;

我想將其變成一個循環,其中cd1_abcd_w.txt然后將變成cd2_abcd_w.txt,輸出將是cd2_rightformat.txt等...一直到50。所以基本上是cd $ i。

非常感謝

bash ,可以使用大括號擴展:

for num in {1..10}; do
    echo ${num}
done

for i = 1 to 10循環的BASIC相似,兩端包含在內,該循環將輸出數字1到10。

然后,您只需將echo命令替換為您需要執行的操作即可,例如:

cut -d ' ' -f5- cd${num}_abcd_w.txt >cd${num}_rightformat.txt
# and so on

如果您需要小於10的數字前導零,請將for循環中的表達式更改for {01..50} 情況似乎並非如此,但要知道非常方便。


另外,在不想使用但很容易知道的類別中,如果不想使用默認值之一,也可以指定一個增量:

pax> for num in {1..50..9}; do echo ${num}; done
1
10
19
28
37
46

(相當於for i = 1 to 50 step 9的BASIC)。

這應該工作:

for((i=1;i<=50;i++));do
cut -d ' ' -f5- cd${i}_abcd_w.txt > cd${i}_rightformat.txt ;
sed 's! \([^ ]\+\)\( \|$\)!\1 !g' cd${i}_rightformat.txt ;
sed -i 's/ //g' cd${i}_rightformat.txt; 
cut -d ' ' -f1-4 cd${i}_abcd_w.txt > cd${i}_extrainfo.txt ;
done

這將在bash中工作:

for in in $(seq 50)
do
cut -d ' ' -f5- cd$i_abcd_w.txt > cd$1_rightformat.txt;
sed 's! \([^ ]\+\)\( \|$\)!\1 !g' cd$i_rightformat.txt;
sed -i 's/ //g' cd$i_rightformat.txt; 
cut -d ' ' -f1-4 cd$i_abcd_w.txt > cd$i_extrainfo.txt;
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM