0
#!/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$i使用的。 cp /home/acharya/Desktop/xx/hdr_confidant.hevil$i 因为文件名只是 hdr_confidant.h 但evil$i与它一起使用。

4

2 回答 2

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
于 2013-03-22T06:57:07.817 回答
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 是脚本的第二个参数。

于 2013-03-22T06:56:36.693 回答