Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209643
  • 博文数量: 76
  • 博客积分: 2231
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 09:15
文章分类

全部博文(76)

文章存档

2011年(76)

分类: LINUX

2011-11-26 08:45:21


间接引用
#!/bin/bash
v1=aaa
v2=bbb
c=1
if [ $c -eq 1 ]
then
vname=v$c
eval vvv=$vname
echo vvv: $vvv
eval vvv=\$$vname
#或eval vvv='$'$vname
#错误用法eval vvv=$$vname
echo vvv: $vvv
fi
vvv: v1
vvv: aaa
#以变量v1的值aaa作为变量名,将变量vaaa的值赋予这一新定义的变量aaa
#!/bin/bash
v1=aaa
vaaa="This is aaa"
eval $v1='$vaaa'
echo aaa:$aaa
aaa:This is aaa
#错误用法
#eval $v1=$vaaa
#eval $v1="$vaaa"
#以变量v1的值aaa作为变量名,并将变量名字串作为值赋予自身
#!/bin/bash
v1=aaa
vaaa="This is aaa"
eval $v1=$v1
#与例二的错误用法不同,这一用法是正确的
echo aaa: $aaa
eval $v1="$v1"
#与例二的错误用法不同,这一用法是正确的
echo aaa: $aaa
eval $v1='$v1'
echo aaa: $aaa
eval
eval arg1 [arg2] ... [argN]
将表达式中的参数,或者表达式列表,组合起来,并且评估它们.包含在表达式中的任何变量
都将被扩展.结果将会被转化到命令中.这对于从命令行或者脚本中产生代码是很有用的.
bash$ process=xterm
bash$ show_process="eval ps ax | grep $process"
bash$ $show_process
1867 tty1 S 0:02 xterm
2779 tty1 S 0:00 xterm
2886 pts/1 S 0:00 grep xterm
Now, showing how to "expand" a variable using "eval" . . .
# 现在,来看一下怎么用"eval"命令来扩展一个变量. . .

for i in 1 2 3 4 5; do
eval value=$i
# value=$i 将具有同样的效果. "eval"并不非得在这里使用.
# 一个缺乏特殊含义的变量将被评估为自身 --
#+ 也就是说,这个变量除了能够被扩展成自身所表示的字符,不能扩展成任何其他的含义.
echo $value
done

echo
echo "---"
echo

for i in ls df; do
value=eval $i
# value=$i has an entirely different effect here.
# value=$i 在这里就与上边这句有了本质上的区别.
# "eval" 将会评估命令 "ls" 和 "df" . . .
# 术语 "ls" 和 "df" 就具有特殊含义,
#+ 因为它们被解释成命令,
#+ 而不是字符串本身.
echo $value
done


exit 0
阅读(1318) | 评论(0) | 转发(0) |
0

上一篇:shell for循环退出

下一篇:eval3

给主人留下些什么吧!~~