Shell中eval的用法示例

功能说明:告知shell取出eval的参数,重新运算求出参数的内容。
语  法:eval [参数]
补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。
参  数:参数不限数目,彼此之间用分号分开。
1.执行命令行之前扫描它两次,再次运算求出参数的内容。

代码如下:

[root@localhost blue]# a="ls |more"
[root@localhost blue]# $a                                           #ls

将 | 和 more 看成了参数,而不是将文件按页显示

代码如下:

ls: cannot access |more: No such file or directory
[root@localhost blue]# eval $a                                    #取出

其参数并再次执行它们

代码如下:

1
1.cpp
2
2.cpp
3
3.cpp
[root@localhost test]# a="123"
[root@localhost test]# echo '${'"a"'}'                        
${a}
[root@localhost test]# eval echo '${'"a"'}'                #再次执行${a}命令
123

2.eval取得最后一个参数

代码如下:

[root@localhost blue]# echo 'eval echo \$$#' > last
[root@localhost blue]# cat last
eval echo \$$#
[root@localhost blue]# ./last 1 2 3 4
4

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

(0)

相关推荐

  • Bash Shell中Shift用法分享

    shift可以用来向左移动位置参数.Shell的名字 $0第一个参数 $1第二个参数 $2第n个参数 $n所有参数 $@ 或 $*参数个数 $# shift默认是shift 1以下边为例: 复制代码 代码如下: cat shift.sh#----------------------------输出文字-开始----------------------------#!/bin/bashuntil [ -z "$1" ]  # Until all parameters used updo 

  • ShellExecute函数用法的实例代码

    复制代码 代码如下: #include<windows.h>#include<stdio.h>int main(){    //打开记事本   // ShellExecute(NULL, "open", "notepad.exe", NULL, NULL, SW_SHOWNORMAL);   //使用notepad.exe 打开指定文本,参数不要忘记加'\'   //ShellExecute(NULL, "open", &

  • linux shell命令行参数用法详解

    习惯使用linux命令行来管理linux系统,例如: 复制代码 代码如下: $ date 二 11 23 01:34:58 CST 1999  $ 用户登录时,实际进入了shell,它遵循一定的语法将输入的命令加以解释并传给系统.命令行中输入的第一个字必须是一个命令的名字,第二个字是命令的选项或参数,命令行中的每个字必须由空格或TAB隔开,格式如下:  复制代码 代码如下: $ Command Option Arguments 一,选项和参数 选项是包括一个或多个字母的代码,它前面有一个减号(减

  • shell中冒号的特殊用法分享

    : ${VAR:=DEFAULT} 当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT.如果不在前面加上:命令,那么就会把${VAR:=DEFAULT}本身当做一个命令来执行,报错是肯定的.

  • Shell常见用法小记

    shell的简单使用 最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了下,方便以后随时回顾和查阅! 1. 综述 shebang 其实shell的开始并不难,第一行如下: #!/bin/bash 叫做shebang 注释 shell的注释以#开头(这点类似于python) 变量 变量定义: var_test1="hello" 注意定义和赋值时=两边均不能有空格

  • Shell函数的7种用法介绍

    1. 在shell文件内部定义函数并引用: 复制代码 代码如下: [~/shell/function]# cat factorial.sh #!/bin/bash function factorial { factorial=1 for (( i=1;i <= $1;i++ ))         do         factorial=$[ $factorial * $i ]         done echo $1的阶乘是:$factorial } echo '程序名':$0,用于求阶乘 f

  • linux shell命令行选项与参数用法详解

    问题描述:在linux shell中如何处理tail -n 10 access.log这样的命令行选项?在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景.1,直接处理,依次对$1,$2,...,$n进行解析,分别手工处理:2,getopts来处理,单个字符选项的情况(如:-n 10 -f file.txt等选项):3,getopt,可以处理单个字符选项,也可以处理长选项long-option(如:--prefix=/home等).总结:小脚本手工处理即可,getopt

  • Shell脚本中让进程休眠的方法(sleep用法)

    有时候写Shell的脚本,用于顺序执行一系列的程序. 有些程序在停止之后并没能立即退出,就例如有一个 tomcat 挂了,就算是用 kill -9 命令也还没瞬间就结束掉. 这么如果 shell 还没等其退出就接着执行下一行,这么就出乱子了. 刚知道了原来 shell 也能有 sleep 的参数. 复制代码 代码如下: sleep 1 睡眠1秒 sleep 1s 睡眠1秒 sleep 1m 睡眠1分 sleep 1h 睡眠1小时 用法如下,例如重启tomcat: 复制代码 代码如下: #!/bi

  • Shell脚本数组用法小结

    array作为一种数据结构,在一些高级语言中都是有直接提供和实现的,当然我shell中也是有的哈. PS:写这篇文章的原因是B哥在群里发了一个截图: 我大B哥依然是全能型人才哈...废话少说,说下正题 1.怎么声明一个数组变量? 直接赋值: 复制代码 代码如下: array[0]="Zero" array[1]="One" array[2]="Two" declare声明: 复制代码 代码如下: declare -a array 小括号空格法:

  • shell中case的用法学习笔记

    shell中的case语句: 可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码. 使用格式:case 匹配母板 in模板1 [ | 模板2 ] - ) 语句组 ;;模板3 [ | 模板4 ] - ) 语句组 ;;esaccase语句的匹配是从上往下地匹配顺序.因此,case语句编写的原则是从上往下,模板从特殊到普通.在C语言里,case语句中有default模板,而在shell程序设计中,可能将模板写成*,就可以完成相同的功能. 例1: 复制代码 代码如下: #!

随机推荐