博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eval命令妙用——变量嵌套替换
阅读量:4261 次
发布时间:2019-05-26

本文共 881 字,大约阅读时间需要 2 分钟。

eval命令在Linux下的应用非常广泛,在写脚本的时候遇到一个变量嵌套的问题,用eval迎刃而解,略试不爽啊。

var1="hello"i=1  #有时候i需要放在循环里,所以实际应用中有意义what=var${i}temp=whatecho $temp   #打印出whateval temp=$(echo \$$what)echo $temp #打印出hello

究其原因在于eval替换表达式中的变量再做运算(可以看到上面的\$$what是间接引用的形式,间接引用通常都要和eval共同使用来实现,因为eval会强制替换变量的值,详细内容可参见《高级bash脚本编程指南》(通过特殊字符“!”来找),另外参见关于eval命令的介绍

 

更多eval用法见下:

1、eval会把赋值语句中双引号之间的内容直接赋给‘=’前的变量,而不是当作字符串赋给变量

例如:

version="(2 4)" 是将字符串赋值给 version;

eval version="(2 4)" 执行时变成了 version=(2 4), 是把数组 (2 4) 赋值给 version

 

2、当在一个赋值语句的前面加上 eval 时,它就会将 后面表达式中以 $ 开头的所有变量进行整体替换

例如:

var1="1234 4556"

tmp=var

eval test="$"$tmp"1"

echo   $test

那么就会在屏幕上显示出 :

         1234 4556

 

3、eval会把标准输出中的内容进行赋值

例如

eval $(printf "a=\"1234\" b=\"4556\"") 其中printf也可以替换成echo

echo $a 输出1234

echo $b 输出4556

 

来源:

http://neoremind.net/2011/02/eval_command_usage/

关于eval的介绍:

http://363918.blog.51cto.com/353918/1341977

http://www.linuxso.com/command/eval.html

转载地址:http://xhaei.baihongyu.com/

你可能感兴趣的文章
css中使用'!important'使属性值有最高优先级
查看>>
URI's fragment
查看>>
关于uni-app的ui库、ui框架、ui组件
查看>>
vue中使用v-for时为什么不能用index作为key?
查看>>
如何在Vue中获取自定义属性方法:data-id
查看>>
vue v-for循环的用法
查看>>
CSS实现垂直居中的常用方法
查看>>
js取整数、取余数的方法
查看>>
vue子组件给父组件传值
查看>>
js中布尔值为false的六种情况
查看>>
vue中动态添加class类名
查看>>
js关闭定时任务
查看>>
vue-worker的介绍和使用
查看>>
【vue】使用vue-cli4.0快速搭建一个项目
查看>>
关于Unexpected console statement (no-console)的解决
查看>>
Android 中 RSA接口加密以及解密
查看>>
git 如何下载分支代码到本地
查看>>
uni-app中自定义动态底部tabbar(附示例源码)
查看>>
Vue-cli4 项目部署遇到的问题
查看>>
git commit -m "XX"报错 pre -commit hook failed (add --no-verify to bypass)问题
查看>>