2011年(6)
分类: LINUX
2011-12-09 18:26:59
eval command-line
其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。如:
pipe="|"
eval ls $pipe wc -l
shell第1次扫描命令行时,它替换出pipe的值|,接着eval使它再次扫描命令行,这时shell把|作为管道符号了。
看下面脚本
#!/bin/sh
#eval1.sh
v1="aaa"
v2="bbb"
c="1"
if [ $c -eq 1 ]
then
vname=v$c
eval vvv1="$"$vname
eval vvv='$'$vname #也正确
#vvv2=${$vname}#错误使用
echo "vvv1=$vvv1,vvv2=$vvv2"
fi