zoukankan      html  css  js  c++  java
  • shell中eval命令妙用——变量嵌套替换

    eval命令妙用——变量嵌套替换

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

    var1="hello"
    i=1  #有时候i需要放在循环里,所以实际应用中有意义
    what=var${i}
    temp=what
    echo $temp   #打印出what
    eval temp=$(echo $$what)
    echo $temp #打印出hello
    究其原因在于eval替换表达式中的变量再做运算。
    
    

    更多eval用法见下:

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

    例如:

    
    version="(2 4)" 是将字符串赋值给 version;
    
    eval version="(2 4)" 执行时变成了 version=(2 4), 是把数组 (2 4) 赋值给 version
    
    1. 当在一个赋值语句的前面加上 eval 时,它就会将 后面表达式中以 $ 开头的所有变量进行整体替换

    例如:

    
    var1="1234 4556"
    
    tmp=var
    
    eval test="$"$tmp"1"
    
    echo   $test
    

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

    1234 4556

    1. eval会把标准输出中的内容进行赋值

    例如

    
    eval $(printf "a="1234" b="4556"") 其中printf也可以替换成echo
    
    echo $a 输出1234
    
    echo $b 输出4556
    
    
  • 相关阅读:
    python实现从生成器中取固定角标的元素
    python-高阶函数
    git学习手册
    python批量进行文件修改操作
    python第一站
    LoadRunner,一个简单的例子
    python3中urllib2的问题
    gitlab 随笔
    sed 删除文本
    sed 修改文本
  • 原文地址:https://www.cnblogs.com/muahao/p/5974516.html
Copyright © 2011-2022 走看看