• Linux-eval


    shell中eval的用法示例:

    语  法:eval [参数]

    功能说明:eval会对后面的[参数]进行两遍扫描,如果在第一遍扫面后cmdLine是一个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义

    补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。

    参  数:参数不限数目,彼此之间用分号分开。

    使用案例:

    1.不加eval则将 | 和 more 看成了参数,而不是将文件按页显示

    [root@ipi ~]# a="ls |more"
    [root@ipi ~]# $a 
    ls: cannot access |more: No such file or directory

    加入eval改善执行结果:

    [root@ipi ~]#eval $a
    Desktop
    Documents
    Downloads
    install.log
    install.log.syslog
    iptables.sh
    正常输出想要的结果

    2.此条命令不加eval直接将${a}作为参数输出,加了eval则输出了a的赋值“123”

    [root@ipi ~]# a="123"
    [root@ipi ~]# echo '${'"a"'}'                         
    ${a}
    [root@ipi ~]# eval echo '${'"a"'}'                #再次执行${a}命令
    123 

    3.如下:

    [root@ipi ~]#  set 1 2 3 4
    如果我们要输出4 可以使用echo $4,那假设我们不知道一共有几位,我要输出最后一位的话得用“$#”,也就是$$# [root@ipi ~]# $$#$4
    我们发现它并没有返回我们想要的结果,so 加入eval可以解决我们的问题 [root@ipi
    ~]# eval $$#
    4

    另外其他高级用法后作补充!
    eval是对Bash Shell命令行处理规则的灵活应用,进而构造"智能"命令实现复杂的功能。
    上面提及的命令是eval其中一个很普通的应用,它重复了1次命令行参数传递过程,纯粹地执行命令的命令。
    其实它是bash的难点,是高级bash程序员的必修之技。

    作者:运维·拖拉斯基

    作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~

    出处:https://www.cnblogs.com/-abm/

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    SQlServer 从系统表 sysobjects 中获取数据库中所有表或存储过程等对象
    Win7 Print Spooler服務自动关闭
    C# 数据流操作 Stream 相关
    GRUB引导故障解决
    RAID配置层+配额
    磁盘一
    权限管理及归属
    cenos7关闭防火墙 安全机制
    linux用户管理-----账号管理和权限归属设置
    yum 仓构建,源代码安装
  • 原文地址:https://www.cnblogs.com/-abm/p/7890834.html
Copyright © 2020-2023  润新知