- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 Shell入门
407234756
1.1 简单的shell例子
shell脚本类似于windows下的批处理文件(bat),下面是一个简单的shell脚本:
#!/bin/sh
#========================================
# FUNCTION: display “hello,world!”
# PARAM: none
# USAGE: display
#========================================
echo hello,world!
SHELL脚本主要由三部分构成,其中:
#!/bin/sh 指明脚本运行的环境,可以是sh、csh、bash等,一般默认是sh。
第二部分为说明部分,对脚本功能、参数的描述。
第三部分为命令部分,可以是多个命令的组合。
1.2 脚本的运行
脚本编辑完后,可采用多种方式进行运行。
设置运行权限运行
chmod u+x display
./display
借助sh运行
sh display
2 shell变量
Shell脚本存在四类变量:局部变量、全局变量、位置参数变量以及特定变量。
注:变量的数据类型不需要指明。
2.1局部变量
Shell脚本类似于函数(模块),也有生命周期,局部变量(本地变量)只在shell脚本的生命周期内有效。
局部变量的定义语法:
variable-name=value
变量使用需注意下面几点:
变量名最好使用全部大写;
等号前后不能有空格;
字符串变量赋值时最好将字符串用双引号括起来。如:FILENAME=”file.txt”
变量名命名不能与保留字,全局变量名重名,避免shell脚本误解。
变量定义时一定要给赋值,不然shell可能会当做函数调用,引起误解。
2.2 全局变量
全局变量是运行shell脚本的用户设置的环境变量。环境变量的值对该用户下的所有shell进程有效。环境变量的设置一般保存在登录用户的.profile文件中。
2.3 位置变量
位置变量类似于函数的输入参数。属于只读变量,位置参数从0开始编号,访问时需在位置编号前加$符号,如访问第3个参数,则使用$3。
2.4 特定变量
特定变量指shell脚本中的输入参数个数、脚本运行过程中的状态以及脚本运行的进程号信息等。
特定变量 变量含义 $# 传递给shell脚本的参数个数 $* 传递给shell脚本的所有参数串接成一字符串 $$ 脚本运行的当前进程号 $? 脚本命令运行返回值,0表示运行正常 $! 后台运行的最后一个进程的进程号 3 变量的运算
变量分两类:数值与字符串。注:Shell脚本仅支持整型,其它数值型不支持。
3.1 整型运算
3.1.1 四则运算
对整型变量赋值时,不能直接使用表达式,使用表达式赋值,shell脚本会当将该变量当做字符串对待。
整型数值支持加、减、乘、除、取模运算,分别对应+、-、*、/、%符号。由于*属于通配符,在进行乘法运算时需要使用”\”进行转义。
对整型数值在进行运算时,不能像高级语言直接对变量进行算术运算,需要使用下面语句:
i=4
i=` expr $i \* 5 `
3.1.2 比较运算(整型比较)
比较运算符 对应高级语言中的运算符 -eq == -ne != 或 -gt -lt -le = -ge =
如:
NUMBER=120
[ $NUMBER -eq 130 ]
echo $?
3.2 字符串运算
3.2.1字符串直接相加
例如:
FILENAME1=dat”
FILEDIR=”/data/cdr/”
FILENAME=$FILEDIR$FILESUFFIX
3.2.2 shell命令与函数
`命令
例如:
FILESUFFIX=”.dat”
FILEDATE=`date +’%Y-%m-%d`
FILEDIR=”/data/cdr/”
FILENAME=$FILEDIR$FILEDATE$FILESUFFIX
cut函数
从文件名中获取时间字符串,例如:
FILLNAME=’/data/cdrdat’
FILEDATE=`echo $FILENAME |cut -c 11-18`
获取指定位置的字符串:
FILEDATE=`echo $FILENAME |cut
文档评论(0)