Fosdccf.blog.chinaunix.net
sdccf
全部博文(19283)
Linux酷软(214)
tmp(0)
PostgreSQL(93)
Solaris(383)
AIX(173)
SCOUNIX(575)
DB2(1005)
Shell(386)
C/C++(1187)
MySQL(1750)
Sybase(465)
Oracle(3695)
Informix(548)
HP-UX(0)
IBM AIX(2)
Sun Solaris(0)
BSD(1)
Linux(8597)
SCO UNIX(23)
2011年(1)
2009年(125)
2008年(19094)
2007年(63)
clifford
linky521
曾德标
fengzhan
leon_yu
mcuflowe
yt200902
guanyuji
GY123456
snow888
carlos94
丸喵喵
sean229
cxunix
可怜的猪
cqxc413
xzzgege
wb123456
分类:
2008-04-18 22:44:32
+-------------+ 单引号 |------------------------->| |--------------------------| | ----------------------->| 1.分隔成记号|---- ---------------| | | | ------------------->| | 双引号 | | | | | +-------------+ | | | | | || | | | | |读取下一个命令 \/ | | | | | +-------------------------------------------+ | | | | | | 2. | | | | | ------| 检验第一个记号 | | | | | |开放的关键字 其他关键字 | | | | | | 非关键字 | | | | | +-------------------------------------------+ | | | | || | | | | \/ | | | | +-----------------------------+ | | | | 扩展别名 | 3. 检验第一个记号 | | | | |------------| 别名 | | | | | 不是别名 | | | | +-----------------------------+ | | | || | | | \/ | | | +--------------+ | | | | 4.大括号扩展 | | | | +--------------+ | | | || | | | \/ | | | +--------------+ | | | | 5.~符号扩展 | | | | +--------------+ | | | || | | | \/ | | | +--------------+ 双引号 | | | | 6.参数扩展 |<-----------------| | | +--------------+ | | || | | \/ | | +------------------------------+ | | | 7.命令替换(嵌套命令行处理) | | | +------------------------------+ | | || | | \/ | | +--------------+ 双引号 | | | 8.算术扩展 |------------------| | | +--------------+ | | | || | | | \/ | | | +--------------+ | | | | 9.单词分割 | | | | +--------------+ | | | || | | | \/ | | | +--------------+ | | | | 10.路径名扩展| | | | +--------------+ | | | || | | | \/ | | | +----------------------------------------+ | | | | 11.命令查寻:函数,内置命令,可执行文件|<---|-----| | +----------------------------------------+ | || | \/ |将参数带入下一个命令 +-------------+ |----------eval--------------| 12.运行命令 | +-------------+
[root@home root]# cat myscript1 #!/bin/sh evalit(){ if [ $cnt = 1 ];then eval $@ return else let cnt=cnt-1 evalit $@ fi eval $@ } cnt=$1 echo $cnt | egrep "^[1-9][0-9]*$" >/dev/null if [ $? -eq 0 ]; then shift evalit $@ else echo 'ERROR!!! Check your input!' fi [root@home root]# ./myscript1 3 hostname home home home [root@home root]# ./myscript1 5 id |cut -f1 -d' ' uid=0(root) uid=0(root) uid=0(root) uid=0(root) uid=0(root)
[root@home root]# a="id | cut -f1 -d' '" [root@home root]# $a id:无效选项 -- f 请尝试执行‘id --help’来获取更多信息。 [root@home root]# eval $a uid=0(root)
eval $(dircolors -b /etc/dircolors)
[root@localhost root]# dircolors -b > tmp [root@localhost root]# cat tmp LS_COLORS='no=00:fi=00:di=01;34:ln=01; ...... export LS_COLORS #这里我没有指定配置文件,所以dircolors按预置数据库生成代码。 其输出被eval命令传递给shell执行。
[root@home root]# type -all pwd pwd is a shell builtin pwd is /bin/pwd [root@home root]# cat myscript2 #!/bin/sh pwd(){ echo "This is the current directory." command pwd } pwd [root@home root]# ./myscript2 This is the current directory. /root
[root@home root]# cd // [root@home //]# pwd // [root@home //]# type -all pwd pwd is a shell builtin pwd is /bin/pwd [root@home //]# /bin/pwd / [root@home //]# enable -n pwd [root@home //]# pwd /
上一篇:Linux下自动挂载DOS分区的shell脚本
下一篇: 一个小计算器脚本
登录 注册