2017-08-28 80 views
0

我有一個簡單的bash腳本,它打印另一CSH腳本數次:動態變量循環

for j in $(seq 2 10) 
do 
printf "#!/bin/csh 
set cnt = ${j} 

set cnt2 = ${j}+1 > "prod_${j}.ll" 
done 

在此,循環的每一步,我需要定義CNT2爲「$ {}Ĵ+1」(例如如果j = 2,CNT2應爲3等) 和比返回到原來的$Ĵ,在印刷文件的名稱定義它值

> "prod_${j}.ll" 

回答

0

也許最簡單的方法是使用另一個變量,我已經使用k here:

for j in $(seq 2 10) 
do 
    k=$((j+1)) 
    printf "#!/bin/csh 
set cnt = ${j} 

set cnt2 = ${k} > "prod_${j}.ll"\n" 

done 

它沒有太大的關係,但它似乎並不值得使用printfecho是有點簡單,不需要其後的換行符。同樣,變量名稱周圍的大括號在這裏是不必要的,但如果你喜歡打字花括號,則不會造成任何傷害。

+0

是的,謝謝你的作品!如果我使用「while」循環更改「for循環」,腳本會更有效嗎? –

+0

我對此表示懷疑。 shell腳本中最大的低效率通常是使用外部過程,最大的罪魁禍首是不必要地使用'cat'。使用'printf'有時效率不高,因爲它不是內置於所有的shell。如果我的答案可以接受,那麼請接受它作爲解決方案。 – cdarke