2013-02-14 51 views
2

我正在循環與for i in {1..n}循環的命令,並希望輸出文件有n擴展名。Bash循環 - 命名後n(這是用戶的輸入)

例如:

for i in {1..2} 
    do cat FILE > ${i}_output 
    done 

然而n是用戶的輸入:

echo 'Please enter n' 
    read number 
    for i in {1.."$number"} 
    do 
    commands > ${i}_output 
    done 

循環翻轉n倍 - 這工作得很好,但我的輸出看起來像這樣{1..n}_output

如何在這樣的循環中命名我的文件?

編輯

也試過這個

for i in {1.."$number"} 
    do 
    k=`echo ${n} | tr -d '}' | cut -d "." -f 3` 
    commands > ${k}_output 
    done 

但它不工作。

+1

http://stackoverflow.com/questions/169511/how-do-i- iterate-over-a-range-of-numbers-in-bash – KBart 2013-02-14 08:20:43

回答

-1

請嘗試使用seq (1)來代替。如在for i in $(seq 1 $number)

+0

'seq'涉及執行可能會減慢速度的外部命令,但我不確定這是否會導致downvote。 – Johnsyweb 2013-02-14 08:37:39

2

for循環中的range參數僅適用於常量值。因此用下面的值代替{1..$num}{1..10}

OR

更改for循環:

for((i=1;i<=number;i++)) 
+1

'我<=號碼'或者你會錯過最後一個元素。你也不需要那裏的'$',要麼(見我的答案)。 – Johnsyweb 2013-02-14 08:31:20

+0

@Johnsyweb修正了它。但$也不會傷害:) – 2013-02-14 08:41:04

0

你可以使用一個簡單的for循環(類似於像C,C++等langaues發現的):

echo 'Please enter n' 
read number 
for ((i=1; i <= $number; i++)) 
do 
    commands > ${i}_output 
done 
+0

'我<=數字'。沒有'$'。 – Johnsyweb 2013-02-14 08:36:15

+0

@Johnsyweb,我試過了。似乎兩者都在工作。 :) – vaisakh 2013-02-14 08:38:44

+0

偉大的:-)每一天都是一個學校日。 – Johnsyweb 2013-02-14 08:40:15