请问这段Shell是怎么回事?

super000 2006-11-27 04:33:22

var1=var2
var2="Good Morning"
echo var1:$var1
eval var1=\$$var1
echo var1:$var1
var2="Than you"
eval echo now var1:\$$var1
var2="Hello again"
echo var1:${!var1}
exit

-----------------------------
结果如下:
var1:var2
var1:Good Morning
now var1: Morning
var1:

--
为什么now var1的时候不是输出Thank you而是
不完整的Morning?
最后一个输出为什么空了?
...全文
245 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
badboy213 2006-12-05
  • 打赏
  • 举报
回复
eval echo now var1:\$$var1
执行时变量赋值后:
eval echo now var1:\$Good Morning
而Good非变量,所以$Good为空,刚返回字串Morning

echo var1:${!var1}
说明echo !var1的作用是把上次var1赋值语句ECHO出来,执行时上面的SHELL被转意为:
echo var1:${var1=var2},而${var1=var2}是空的。

Areslp 2006-11-29
  • 打赏
  • 举报
回复
mark..

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧