2012-03-23 27 views
1

我有一個非常簡單的問題。我有一個程序,接受一個整數作爲輸入(後面跟着一個CR)。我想多次運行這個程序,並且我希望這個整數每次都是一個不同的(隨機)數字。所以我想把所有東西都包裝在一個shell腳本中,但我不知道如何實現它。我正在思考下面的代碼,但12345被$ RANDOM取代。我應該怎麼做? 多謝提前, S.將隨機數傳遞給腳本中的程序

#!/bin/bash 
i=1 
while [ $i -le 100 ] 
do 
./recomb100runs << !! 
12345 
!! 
done 
+5

您是否嘗試過使用'$ RANDOM' ...? ;) – FatalError 2012-03-23 17:25:38

+0

從我所知道的一切來看! !傳遞給程序「原樣」。因此,如果我用$ RANDOM替換12345,我的程序將從字面上獲得$ RANDOM,而不是隨機數。所以我會得到一個錯誤。我對嗎? – Newcolour 2012-03-23 17:34:04

+0

變量擴展仍然針對heredoc字符串執行。你可以用'cat'來測試它。 – FatalError 2012-03-23 17:35:51

回答

4

你想用$((RANDOM))

#!/bin/bash 

i=1 
while [ $i -le 100 ] 
do 
cat << !! 
$((RANDOM)) 
!! 
done 

(更換「貓」與你想與隨機輸入運行的腳本 - 你案例「./recomb100runs」。)

+0

太棒了!非常感謝! – Newcolour 2012-03-23 17:40:04

+3

您不需要使用算術上下文:'$ RANDOM'可以很好地工作。在這種情況下使用here-string而不是here-doc會更優雅一些:'cat <<< $ RANDOM' – 2012-03-23 18:28:41