- 论坛徽章:
- 0
|
self uderstanding:
脚本运行:./tarray "sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"
脚本内容:
---------------------------------------------------------
#!/bin/bash
#tarray
A=(eth0 eth1 eth2 eth3)
index=0
echo "index is $index"
while [ ${index} -lt ${#A} ]
do
#echo "A[$(($index+1))] is {A[$(($index+1))]}"
echo "A[$index] is {A[$index]}"
index=$(($index+1))
done
echo $1
eval $1
#sed -i '/A=(.*/s///g' $0
----------------------------------------------------------------------
注解:
[1]参数"sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"用引号包含
[2]脚本运行期间可以修改自己本身。
[3]如果将"sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"放在脚本最后,则也会将自己替换掉!
[4]脚本如果将eval $1改为$1,则$1之后扩展一次,不会再次进行扩展其中的$0
[5]需要将"sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"中$0写为\$0,否则第一次就进行了扩展,再次扩展后出现
sed -i '/A=(.*eth1/s/eth1\( \|\)//g' bash
sed: can't read bash: No such file or directory
另外注解5出现原因我也无法解析,有高手帮忙解析一下。 |
|