我有一个shell脚本,用户将不同的大小作为命令行参数传递。对于每个大小,我想执行一些任务,然后将该任务的输出保存到名称大小的.txt文件中。
如何通过命令行传递并为输出文件创建字符串名称的一部分?我将输出文件保存在另一个命令行参数指定的目录中。也许一个例子可以清除它。
在foor lop中,i值表示我需要使用的命令行参数,但是$$我不起作用。
./runMe arg1 arg2 outputDir [size1 size2 size3 ...]
for ((i=4; i<$#; i++ ))
do
ping -s $$i google.com >> $outputDir/$$iresults.txt
done
我需要知道如何构建$ outputDir / $$ iresults.txt字符串。此外,ping -s $$我不起作用。就像我需要两个级别的替换。我需要将$ [$ i]内部$ i替换为循环中的值,例如4为ex,使其为$ 4。然后用第4个命令行参数替换$ 4!
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
间接使用!
替换前缀:
echo "${!i}"
但是你应该在转移之前的那些之后使用裸机:
shift
shift
for f
do
echo "$f"
done
答案 1 :(得分:0)
for ARG in $@; do
$COMMAND > ${ARG}.txt
done