shell 中eval运用

eval 可用于变量的嵌套

DR=DDIR$inum

eval SSDIR=$(echo \$$SR)

范例:

#!/bin/bash

Date=`date +%Y%m%d`

SDIR1=/DATA-to-External/aa

SDIR2=/DATA-to-External/bb

SDIR3=/DATA-to-External/cc

DDIR1=/historybackup/Data-to-External/aa

DDIR2=/historybackup/Data-to-External/bb

DDIR3=/historybackup/Data-to-External/cc

for inum in `seq 1 7`

do

SR=SDIR$inum

DR=DDIR$inum

eval SSDIR=$(echo \$$SR)

eval DDDIR=$(echo \$$DR)

cd $SSDIR

for job in $(ls)

do

if [ -d $job ];then

mkdir -p $DDDIR/$Date/$job

mv $job/* $DDDIR/$Date/$job/

fi

done

done

时间: 2024-08-24 12:32:19

shell 中eval运用的相关文章

shell中eval的使用问题

转载:http://www.blogjava.net/jasmine214--love/archive/2010/11/26/339106.html 本文将会讲解一些linux中命令的使用与技巧希望对新手给予帮助 一 eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令.该命令适用于那些一次扫描无法实现其功能的变量.该命令对变量进行两次扫描.这些需要进行两次扫描的变量有时被称为复杂变量.不过这些变量本身并不复杂. 1 eval命令也可以用于回显简单变量,不一定是复杂变量 [[email

Shell中eval的用法示例

功能说明:告知shell取出eval的参数,重新运算求出参数的内容. 语 法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开.1.执行命令行之前扫描它两次,再次运算求出参数的内容. 复制代码 代码如下: [[email protected] blue]# a="ls |more" [[email protected] blue]# $a                                   

shell中的`和$()、eval、crontab

一.`和$()的区别 反引号本身就对\进行了转义,保留了本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示. 反引号中: \\ = \ $()中:\ = \ 注意:反引号是老的用法,$()是新的用法,不管是在学习测试中,还是在实际工作中,$()的用法都是被推荐的. 二.eval命令 eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义. 例如有一个文件test1,里面的内容是"this

shell 中的 envl 及 crontab 命令

envl eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义.也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令.因此,eval命令适用于那些一次扫描无法实现其功能的变量. eval 执行以下两个步骤 第一次,执行变量替换,类似与C语言的宏替代 第二次,执行替换后的命令串 栗子: 1.  有一个名为test的文件,其内容为“Please move on !”,定义一个内容是cat test

shell中的变量与eval(转)

原文链接:http://www.361way.com/shell-eval-variable/4957.html shell 中经常会用到变量的嵌套的情况.比如,单个或多个变量的值作为变量名,再对该变量名取$获取其内部的变量的情况,这种脚本写起来很难搞,还好有eval 命令方便我们处理这种情况.便于理解,先来一个示例: #!/bin/bash a='my' b='site' my_site='my site www.361way.com' echo a_b is "$a"_"

shell中的eval学习与应用

一.bash命令处理的12个步骤: 1.将命令行分成由固定元字符集分隔的记号: SPACE, TAB, NEWLINE, ; , (, ),<, >, |,& 记号类型包括单词,关键字,I/O重定向符和分号.2.检测每个命令的第一个记号,查看是否为不带引号或反斜线的关键字. 如果是一个开放的关键字,如if和其他控制结构起始字符串,function,{或(,则命令实际上为一复合命令.shell在内部对复合命令进行处理,读取下一个命令,并重复这一过程.如果关键字不是复合命令起始字符串(如t

Shell脚本eval、``和$()、[[和[、 $(( ))

eval eval的作用是再次执行命令行处理,也就是说,对一个命令行,执行两次命令行处理. 语法:eval cmdLine eval会对后面的 cmdLine 进行两遍扫描,如果第一遍扫描后 cmdLine 是个普通命令,则执行此命令:          如果 cmdLine 中含有变量的间接引用,则保证间接引用的语义. eval echo \$$# 取得最后一个参数 如:cat last eval echo \$$# ./last one teo three four four 第一遍扫描后,

二、Shell中的变量

变量是任何程序或脚本的重要组成部分.变量为程序或脚本访问内存中的可被修改的一块数据提供了简单的方式.Linux Shell中的变量可以被指定为任意的数据类型.Shell中有两种变量的类型:系统变量(环境变量)和用户自定义的变量(本地变量或Shell变量). 环境变量:作用域为当前shell进程及其子进程:环境变量一般均为大写.常用的环境变量有: 系统变量 含义 BASH_VERSION 保存bash实例的版本 DISPLAY 设置X display名字 EDITOR 设置默认的文本编辑器 HIS

shell 中的常用技巧

本文收集了一堆的shell脚本技巧,主要方便自己查阅,技巧出自脚本之家中的博客,自己也增加了实现目的的其他方法,方便以后自己查阅: 0. shell 调试 代码如下: sh -x somefile.sh 在somefile.sh 文件里加上set+x set-x1. 用 && || 简化if else 代码如下: gzip -t a.tar.gz if [[ 0 == $? ]]; then     echo "good zip" else     echo "