理解shell的eval命令】的更多相关文章

看以下两条命令:[zhangsan@XEN /sys]$ a="ls";b="\$a";c="$b";"$c"Hey! No command '$a' found, did you mean 'ia'? [zhangsan@XEN /sys]$ a="ls";b="\$a";c="$b";eval "$c"block bus class dev d…
原文:http://www.cnblogs.com/xdzone/archive/2011/03/15/1984971.html 语法:eval cmdLine eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令:如果cmdLine中含有变量的间接引用,则保证间接引用的语义.   举例如下: set 11 22 33 44 如果要输出最近一个参数,即44,可以使用如下命令, echo $4 但是如果我们不知道有几个参数的时候,要输出最后一个参…
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用法见下: eva…
1. eval command-line 其中command-line是在终端上键入的一条普通命令行.然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次.如: pipe="|" eval ls $pipe wc -l shell第1次扫描命令行时,它替换出pipe的值|,接着eval使它再次扫描命令行,这时shell把|作为管道符号了. 如果变量中包含任何需要shell直接在命令行中看到的字符(不是替换的结果),就可以使用eval.命令行结束符(: | &…
本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=longshuai"和"a=…
5.1 1. cat /etc/passwd 可以查看每个用户自己的默认的shell程序. 2.默认的交互shell会在用户登录某个虚拟控制台终端时启动. 不过还有另外一个默认的shell是/bin/sh,它作为默认的shell,用于那些需要在启动时使用的shell脚本 ls -l /bin/sh   进行查看 乌班图的发行版中默认的系统shell(dash shell)和默认的交互shell(bash shell)并不相同. 可以直接 dash 来启动 dash shell exit 退出 5…
eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令. 该命令适用于那些一次扫描无法实现其功能的变量.该命令对变量进行两次扫描. 这些需要进行两次扫描的变量有时被称为复杂变量.不过这些变量本身并不复杂. eval命令也可以用于回显简单变量,不一定是复杂变量. 1.eval命令也可以用于回显简单变量,不一定是复杂变量 例如:  [neau@mail ~]$ NAME=VALUEBANK [neau@mail ~]$ eval echo $NAME VALUEBANK [neau@mail…
shell解析命令行的过程以及eval命令   本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=…
一.排序命令sort 以行位单位对文件内容进行排序,也可以根据不同的数据类型进行排序 格式:sort [选项] 参数 格式:cat file | sort 选项 1.2常用选项 选项说明 -f 忽略大小写,默认大写字母会排在前面 -b 忽略每行前面的空格 -n 按照数字进行排序 -r 反向排序 -u 等同uniq,表示相同的数据仅显示一行,去重 -t 指定字段分隔符,默认使用tab键分割 -k 指定排序字段 -o <输出文件> 将排序后的结果转存至指定文件 1.3.应用方法 二.去除重复行操作…
当用户登录终端的时候,通常会启动一个默认的交互式shell.系统究竟启动哪个shell,这取决于用户配置.一般这个shell都是/bin/shell.默认的系统shell(/bin/sh)用于系统shell脚本,如那些在系统启动时运行的脚本. 用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个父shell.在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序.这个shell程序被称为子shell. 使用$ps…