2010-06-03 334 views
0

我有一个shell脚本,其中用户将不同的大小作为命令行参数传递。对于这些大小中的每一个,我想执行一些任务,然后将该任务的输出保存到名称中带有大小的.txt文件中。Shell脚本:在脚本中生成输出文件名然后写入它

  1. 如何让命令行通过并为输出文件创建一个字符串名?我将输出文件保存在另一个命令行参数指定的目录中。也许一个例子会清除它。

  2. 在foor lop中,i值表示我需要使用的命令行参数,但是$$ i不起作用。

./runMe ARG1 ARG2 outputDir [尺寸1 size2个size3 ...]

for ((i=4; i<$#; i++)) 
do 
    ping -s $$i google.com >> $outputDir/$$iresults.txt 
done 

我需要知道如何建立$ outputDir/$$ iresults.txt字符串。另外,ping -s $$我不起作用。它就像我需要两个级别的替换。我需要用循环中的值替换$ [$ i] inner $ i,例如ex为4,使其为$ 4。然后用第四个命令行参数替换$ 4!

任何帮助将不胜感激。

谢谢!

+0

:::::::: :Bash? – wilhelmtell 2010-06-03 19:51:10

回答

0

的间接使用!替代前缀:

echo "${!i}" 

但早期的移出后,你应该使用裸为:

shift 
shift 
for f 
do 
    echo "$f" 
done 
+0

好吧,我明白了这个shiffting,但我应该如何使用它来构建字符串? – NewShellScripter 2010-06-03 19:57:19

+0

移位不会构建字符串。 for循环构建字符串。 – 2010-06-03 20:05:35

0
for ARG in [email protected]; do 
    $COMMAND > ${ARG}.txt 
done 
+0

我真的不明白$ COMMAND部分? – NewShellScripter 2010-06-03 19:58:19

+0

如何连接字符串与$ {ARG} .txt,如:{ARG} results.txt – NewShellScripter 2010-06-03 20:04:31

+0

'$ COMMAND'是您的命令。用任何东西代替它:例如'ping -s ...'。至于连接:是的,'$ {ARG} results.txt'就可以。给定参数23它会产生23results.txt。 – wilhelmtell 2010-06-03 20:19:25