2012-03-23 85 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