2015-05-21 56 views
1

我想用輸入參數的數值,我傳遞給一個bash腳本是這樣的:使用在bash腳本輸入參數的數值

./script_pb3.sh out.txt 3

在這裏,我想取我通過(即值3),並用它作爲我的腳本中的數值第二個參數,看起來像這樣:

#!/bin/bash 
NUM=$2 

for i in {1..$NUM}; do 
     echo $i 
done 

但是當我運行它,我得到的是

{1..3} 

而不是

1 
2 
3 

能否請您提供爲什麼發生這種情況和解決方法的解釋?我認爲這個問題旨在將字符串值轉換爲整數值,但我不確定。任何幫助是極大的讚賞。

編輯:答案from here包含關於我的問題的答案(即它假設答案已知)的辯論,但它不是作爲我的問題的答案,因此我沒有在我的首先搜索。但是,謝謝你,指出它。

+2

用途:'爲( (i = 1; i <= NUM​​; i ++));做 echo $ i; done' – anubhava

+0

這確實解決了這個問題。謝謝! – MihaiD

回答

0

我認爲你必須使用SEQ

for i in `seq 1 10`; 
do 
    echo $i 
done  

參考:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html

所以,你要找的是什麼:SEQ 1 $ 2

+0

這也是一個合理的答案。請將seq編輯爲'seq 1 $ 2',以便我可以接受您對我問題的回答 – MihaiD

+0

您鏈接的頁面包含許多可疑,不必要和/或過時的建議。在這種情況下,當''bash'本身已經有一個更有效的C風格的循環時'seq'是一個不必要的(和非標準的)外部需求。 – chepner

+0

我只是想給出一個我覺得最接近問題的答案。如果您覺得不適合,請隨時發佈您認爲會更好的答案 – attaboy182