shell脚本中的sce $ i的含义

时间:2013-03-22 06:46:19

标签: shell

#!/bin/sh
export CLASSPATH=.

for i in "1" "2" "3" "4" "5"
do
echo "running simulation $i..."

cd /home/acharya/ns-allinone-2.35/ns-2.35/
./ns /home/acharya/Desktop/xx/wrls.tcl
mv conf-out-tdsr.tr /home/acharya/Desktop/xx/parser
mv monitorlog.txt /home/acharya/Desktop/xx/parser/r2/evil$2/scen$i
mv reputationlog.txt /home/acharya/Desktop/xx/parser/evil$2/scen$i
mv pathmanagerlog.txt /home/acharya/Desktop/xx/parser/r2/evil$2/scen$i
mv misbehavenodeslog.txt /home/acharya/Desktop/xx/parser/r2/evil$2/scen$i
cd /home/acharya/Desktop/xx/parser/
java DSRParser trace conf-out-tdsr.tr $1 $2 > r2/evil$2/scen$i/scen-r2-$i.txt
java DSRParser routestats r2/evil$2/scen$i/pathmanagerlog.txt $1 $2 >> r2/evil$2/scen$i/scen-r2-$i.txt
cd ..done

这是第二个脚本 - :

#!/bin/sh
export CLASSPATH=.
#./run1.sh
for i in "0" "10" "20" "30" "40"   
do   
    echo "Simulating evil node no. $i ..."
    cp /home/acharya/Desktop/xx/hdr_confidant.hevil$i /home/acharya/ns-allinone-2.35/ns-2.35/dsr/hdr_confidant.h
    cd /home/acharya/ns-allinone-2.35/ns-2.35
    rm dsr/*.o
    make
    cd /home/acharya/Desktop/xx/
    ./run.sh 50 $i
done

这是我想知道的两个shell脚本。

mv monitorlog.txt /home/acharya/Desktop/xx/parser/r2/evil$2/scen$i

关于使用的scen$icp /home/acharya/Desktop/xx/hdr_confidant.hevil$i因为文件名只有hdr_confidant.h,但evil$i与它一起使用。

2 个答案:

答案 0 :(得分:1)

第一个脚本运行五次,变量i分配给“1 2 3 4 5”列表中的每个值。对于每个循环迭代,移动一组文件。 scen$1将是scen1,scen2,scen3 ......随着我的变化。执行两个java程序,输出文件使用$i值,以便将每组结果写入不同的目录。

第二个脚本类似。循环变量将分配给10,20,30等。

$ 1是任何脚本的第一个参数。 $ 2是第二个参数。

要创建一个不存在的目录,请将其插入循环顶部的循环中 - :

 [ -d /home/acharya/Desktop/xx/parser/r2/evil$2 ] || mkdir /home/acharya/Desktop/xx/parser/r2/evil$2

答案 1 :(得分:0)

$ i将被替换为i的值1/2/3/4/5或10/20/30/40/50。 例如,当i的值为1且第二个参数为2时,

mv monitorlog.txt / home / acharya / Desktop / xx / parser / r2 / evil $ 2 / scen $ i 变 mv monitorlog.txt / home / acharya / Desktop / xx / parser / r2 / evil2 / scen1

和$ 2是脚本的第二个参数。