1.eval命令:可用于动态生成和执行代码
foo=10
x=foo
eval y=’$’$x
echo $y
输入10,即eval y=’$’$x被解释为y=$foo,即y=10。
nDay1="111"
nDay2="222"
nDay3="333"
# 遍历变量nDay1 ...nDay3,打印其值
for i in 1 2 3
do
n=$i
eval nVar='$nDay'$i
echo $nVar
done
应该依次输出 $nDay1 , $nDay2, $nDay3 ,即:
111
222
333
另一个用于数组的例子,
#!/bin/ksh
nDay_1[0]=""
nDay_2[0]=""
nDay_3[0]=""
k=2
for i in 1 2 3
do
eval "nDay_$i[$k]=$i" # 赋值, 型如:nDay_x[n]=$i
eval "nVar=\${nDay_$i[$k]}" # 访问, 型如:nVar=${nDay_x[n]}
echo ${nVar} # 打印
done
应该依次输出 ${nDay_1[2]}, ${nDay_2[2]}, ${nDay_3[2]}, 即:
1
2
3
2.exit n:退出
0代表成功,1-125代表出错代码,128以上引发一个信号。
我们脚本或许会和别的脚本交互,这个时候需要相互传递信息,exit是被调用进程的返回值,调用进程使用$?获得返回值。
注:exit和return不同,return用于函数返回值,调用函数和被调用函数在同一个进程中,获取返回值都是用$?。