




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Shell 脚本常用命令 1 Shell中的特殊符号1.1 $ 美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。1.2 # 井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了。1.3 “” 双引号。shell不会将一对双引号之间的文本中的大多数特殊字符进行解释,如#不再是注释的开头,它只表示一个井号“#”。但$仍然保持特殊含义。(在双引号中的$加变量名,即:$PARAM_NAME,依然会转换成变量的值。)1.3.1 双引号对于某些特殊符号是不起作用的, 例如:”,$,(反引号)1.3.2 双引号和单引号不能嵌套。即:echo ” 输出”, echo “” 输出1.4 单引号。shell不会将一对单引号之间的任何字符做特殊解释。(在双引号中的$加变量名,即:$PARAM_NAME,不会转换成变量的值。)1.4.1 echo “$HOME” (结果:/home/xiongguoan)1.5 倒引号。命令替换。在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本,不过特殊字符会被shell解释。1.5.1 echo $HOME (结果:$HOME)1.6 斜杠。用来去掉在shell解释中字符的特殊含义。在文本中,跟在后面的一个字符不会被shell特殊解释,但其余的不受影响。1.7 中括号, 主要是用来测试条件的,通常放在if语句的后面。 (不过还是不太明白),但是中括号本身不会在测试语句执行后消失。1.7.1 echo $HOME (结果:出现错误)1.7.2 echo $HOME (结果:/home/xiongguoan ) (注意:HOME后面有空格哦。)1.7.3 echo $HOME eq /xiong (结果:/home/xiongguoan eq /xiong)1.8 大括号,主要是和$符号配合,作为字符串连接来使用1.8.1 echo $HOMEismydir (结果:/home/xiongguoanismydir)2 预定义的变量2.1 特殊变量$ shell变量名的开始,如$var| 管道,将标准输出转到下一个命令的标准输入$# 记录传递给Shell的自变量个数# 注释开始& 在后台执行一个进程? 匹配一个字符* 匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)$- 使用set及执行时传递给shell的标志位$! 最后一个子进程的进程号 $? 取最近一次命令执行后的退出状态(返回码)$* 传递给shell script的参数$ 所有参数,个别的用双引号括起来$0 当前shell的名字$n (n:1-) 位置参数$ 进程标识号(Process Identifier Number, PID) 输出重定向 输出重定向(追加方式) 列出字符变化范围,如a-z2.2 代值变量* 任意字符串 ? 一个任意字符 abc a, b, c三者中之一 a-n 从a到n的任一字符 2.3 特殊字符的表达b退回 c打印一行时没有换行符这个我们经常会用到 f换页 r回车 t制表 v垂直制表 反斜线本身2.4 其他字符2.4.1 分号; 表示一行结束2.4.2 圆括号() 表示在新的子shell中执行括号内的命令(这样可以不改变当前shell的状态。)但是圆括号在单/双引号内失去作用,只作为普通字符。2.4.3 花括号2.4.3.1 分割命令的用法与圆括号相似,但是:1. 花括号内的命令在当前shell中执行;2.花括号必须作为命令的第一个字符出现。2.4.3.2 引用变量的用法在$后面,表示变量名的开始和结束2.4.4 方括号相当与test命令,用来执行测试条件,通常用在需要判断条件的语句后面,例如:if,while等等。3 设置变量3.1 格式:VARNAME=value (i.e. PARAM=hello)3.2 注意:3.2.1 等号的前后不能有空格3.2.2 如果变量的值是一个命令的执行结果,请加上反引号()。4 引用变量4.1 $VARNAME4.1.1 e.i. echo $HOME (结果:/home/xiongguoan)4.2 变量默认值4.2.1 在引用一个变量的时候可以设定默认值。如果在此之前,该变量已经设定了值,则此默认值无效。如果此时变量没有被设定值,则使用此默认值(但是没有改变此变量的值)。4.2.2 echo Hello $UNAME:-there #其中there是UNAME的默认值4.2.3 其他关于默认值与判读变量的方法:利用大括号表示变量替换表示形式说明$VARIABLE基本变量替换。大括号限定变量名的开始和结束$VARIABLE:-DEFAULT如果VARIABLE没有值,则这种表示形式返回DEFAULT的值$VARIABLE:=DEFAULT如果VARIABLE没有值,则这种表达形式返回DEFAULT的值。另外,如果VARIABLE没有设置,则把DEFAULT的值赋予它$VARIABLE:+VALUE如果VARIABLE被设置,则这种表示形式返回VALUE;否则,返回一个空串$# VARIABLE这种表示形式返回VARIABLE值的长度,除非VARIABLE是* 或者在为*或者的特殊情况下,则返回$所表示的元素的个数。要记住,$ 保存传给该脚本的参数清单$VARIABLE:?MESSAGE如果VARIABLE没有值,则这种表示形式返回MESSAGE的值。Shell也显示出VARIABLE的名字,所以这种形式对捕获得错误很有用4.2.4 注意:4.2.4.1 使用$VALIABLE:?MESSAGE,如果发现此变量此时没有值,则脚本停止运行并显示行号和变量名称。 主要用于调试。4.2.4.2 5 位置变量5.1 使用$1,$2,$3$9,$10,$11来代表输入的参数。其中$0代表被执行的命令或者脚本的名字。$1,$2代表输入的第1,2个参数5.2 例子:# cat count.sh#!/bin/shA=$1 # 将位置$1的数值读入,并赋给变量AB=$2 # 将位置$2的数值读入,并赋给变量BC=$A+$B # 将变量A与B的值相加,将结果赋给Cecho $C # 显示C的数值结果:# ./count.sh 3 69# ./count.sh 34 28625.3 $和$*代表参数的列表,$#代表参数的数量 (不知道$和$*之间的差别)6 运算符和优先级Shell运算符和它们的优先级顺序级别运算符说明13-, +单目负、单目正12!, 逻辑非、按位取反或补码11* , / , %乘、除、取模10+, -加、减9按位左移、按位右移8 =, 小于或等于、大于或等于、小于、大于7= = , ! =等于、不等于6&按位与5按位异或4|按位或3&逻辑与2| |逻辑或1=, + =, - =, * =, /=, % =, & =, =, | =, =赋值、运算且赋值7 source / export / let / unset7.1 source7.1.1 正常情况下,脚本中执行的参数设置只能影响到shell脚本本身的执行环境,不能影响到调用此shell的脚本。7.1.2 使用source命令执行脚本,可以让脚本影响到父shell的环境(即调用此shell的当前shell)。7.1.3 例如:source env.sh7.2 export7.2.1 在bash下,使用export建立环境变量后,会影响到子shell脚本和当前shell的环境变量7.3 unset7.3.1 删除环境变量7.3.2 i.e.#export newval=1#echo $newval1#unset newval#echo $newval (此处为空行,newval已经被删除)7.4 let7.4.1 在bash中只用此命令可以建立一个临时的变量,此变量不会影响到子shell8 逻辑判断8.1 if8.1.1 单格式与嵌套if条件表达式 then#当条件为真时执行以下语句 命令列表 else#为假时执行以下语句 命令列表 fiif语句也可以嵌套使用 if条件表达式1 then if条件表达式2 then 命令列表 else if条件表达式3 then 命令列表 else 命令列表 fi fi else 命令列表 fi8.1.2 多分支格式iftest-f$1 then lpr$1 eliftest-d$1#elif同elseif then (cd$1;lpr$1) else echo$1不是文件或目录 fi8.2 case8.2.1 格式case $newval in1) #这里是可能值1echo 1; #表示第一个分支结束2) #这里是可能值 2echo 2; #第二个分支结束*) #表示其他可能值,必须在最后,否则他后面的语句无法执行echo unkownesac #case 语句结束8.2.2 8.3 while /until8.3.1 格式while 表达式do命令列表done8.3.2 例如:Sum=0 i=0 whiletrue#true是系统的关键词表示真 do i=expr$i+1 Sum=expr$Sum+$i if$i=100 then break; fi done echo$i$Sum 最后这个程序显示的是1005050下面将这个程序再改动一下 Sum=0 i=0 while$i!=100 do i=expr$i+1 Sum=expr$Sum+$i done echo$i$Sum 改动后的程序运算结果和上面是一样但程序比上面的要简练 在这个循环中还可以以until做为测试条件它正好与while测试的条件相反,也就是当条件为假时将继续执行循环体内的语句,否则就退出循环体,下面还用这个例子. Sum=0 i=0 until$i=100 do i=expr$i+1 Sum=expr$Sum+$i done echo$i$Sum 当i不等于100时循环就是当条件为假时循环,否则就退出,而第一个例子是当i不等于100 时循环,也就是测试条件为真时循环.8.4 for8.4.1 枚举用法8.4.1.1 格式for变量in名字列表 do 命令列表 done8.4.1.2 格式for n in 1.10doecho $ndonefor letter in a b c d e;doecho $letterdone8.4.2 文件用法8.4.2.1 格式for file in *do echo $filedone8.4.2.2 例子forFileina1a2a3a4a5 do diffaa/$Filebb/$File done8.4.3 累加格式for ( i=1;$i10;i+)doecho $idonefor( i=1;$i将右尖括号前的命令的输入重定向到尖括号后的文件中。例如:ls *.sh list.txt将当前目录下所有末尾名为sh的文件的列表写入到list.txt9.1.3 输入 将左箭头后面的文件作为左箭头前的命令的输入。例如:grep “a” a.log 2&1后面2&1就是将标准错误的输出重定向到标准输出上。9.2 tee9.2.1 将此命令的输入分叉,一支输出到屏幕一支可以重定向到其他位置。例如: ./test.sh | tee a.txt 2&1运行test.sh,通过tee输出到a.txt,同时屏幕上可以看到输出。并且将错误输出重定向到标准输出( 2&1 ) 9.3 cpio9.3.1 文件或目录打包9.3.1.1 含子目录打包find . -name *.sh | cpio -o shell.cpio将当前目录及其子目录下的sh文件打包成一个文件库为shell.cpio。9.3.1.2 不含子目录的打包ls *.sh | cpio -o shell.cpio将当前目录下的sh文件(不含子目录)打包成一个文件库为shell.cpio。9.3.2 压缩文件打包完成后,即可用Unix中的compress命令(/usr/bin下)压缩打包文件。对一般的文本文件,压缩率较高,可达81。例如:compress shell.cpio则将文件库压缩为shell.cpio.Z(自动添加.Z并删除shell.cpio )。9.3.3 解压uncompress shell.cpio.Z则自动还原为shell.cpio。9.3.4 解包展开将按原目录结构解包展开到当前所在目录下。若以相对路径打包的,当解包展开时,也是以相对路径存放展开的文件数据;若以绝对路径打包的,当解包展开时,也是以绝对路径存放展开的文件数据。因此注意若为相对路径,应先进入相应的目录下再展开。cd /u1cpio id shell.cpio 解压到当期目录。cpio iud shell.cpio则文件若存在将被覆盖,即强制覆盖。cpio id shell.cpio env.sh 解压缩env.sh9.3.5 显示包内的文件cpio it a.log11.5.2.3使用bg命令可以将某个后台程序继续运行。#bg %2#jobs1+ stopped top2+ Running find | grep *.txt a.log11.5.3 将后台运行的程序切回到前台#fg %2将find 命令切回到前台11.6 shell的执行选项-n 测试shell script语法结构,只读取shell script但不执行 -x 进入跟踪方式,显示所执行的每一条命令,用于调度 -a Tag all variables for export -c string 从strings中读取命令 -e 非交互方式 -f 关闭shell文件名产生功能 -h locate and remember functions as defind -i 交互方式 -k 从环境变量中读取命令的参数 -r 限制方式 -s 从标准输入读取命令 -t 执行命令后退出(shell exits) -u 在替换中如使用未定义变量为错误 -v verbose,显示shell输入行11.7 alias建立别名alias dir ls11.8xargs执行本命令的第一个参数,并将xargs的输入作为被执行命令的参数例如:find . -name *.c | xargs cat将本目录及其子目录下所有的C文件使用cat命令显示其内容。12 附件三:Bash中影响环境变量的命令Shell有若干以变量为工作对象的命令,其中有些命令似乎重复了。例如,可以用declare、export和typeset命令来创建全局(或转出)的变量。typeset命令是declare的同义词。Declare 命令语法:declare options name = value摘要:用于显示或设置变量。declare命令使用四个选项:-f 只显示函数名-r 创建只读变量。只读变量不能被赋予新值或取消设置,除非使用declare或者typeset命令-x 创建转出(exported)变量-i 创建整数变量。如果我们想给一个整数变量赋予文本值,实际上是赋予0使用+ 代替-,可以颠倒选项的含义。如果没有使用参数,则declare显示当前已定义变量和函数的列表。让我们关注一下-r选项:$ declare r title= paradise Lost$ title = Xenogenesisbash: title: read-only variable$ declare title= Xenogenesis$ echo $titleXecogenesis$ typeset title = The Longing Ring”$ echo $titleThe Longing Ring这个示例表明,只有declare或typeset命令可以修改只读变量的值。export命令语法:export options name = value摘要:用于创建传给子Shell的变量。export命令使用四个选项:- 表明选项结束。所有后续参数都是实参-f 表明在“名-值”对中的名字是函数名-n 把全局变量转换成局部变量。换句话说,命名的变量不再传给子Shell-p 显示全局变量列表如果没有用参数,则假定是一个-p参数,并且显示出全局变量的列表:$ exportdeclare x ENV = /home/medined/ . bashrcdeclare x HISTFILESIZE = 1000declare xi numPages = 314declare xr title = The Longing Ringdeclare xri numChapters = 32这种显示的一个有趣的特性是,它告诉我们哪些变量只能是整数、是只读的,或者二者皆可。let命令语法:let expression摘要:用于求整数表达式的值。let命令计算整数表达式的值。它通常用来增加计数器变量的值,如例5-9所示。例5-9 let使用let命令# ! /bin/bashcount=1for element in $do echo $element is element $count let count+=1done下面是这个脚本运行结果示例:$ chmod + x let$ . /let one two threeone is element 1two is element 2three is element 3注意:如果我们习惯在表达式中使用空格,那么要用双引号把表达式括起来,如:let count + =1否则会导致语句错误。local 命令语法: local name = value摘要: 用于创建不能传给子Shell的变量。这个命令仅在过程内部有效。简单说来,lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保型乳化剂项目可行性研究报告
- 2025-2026学年统编版(2024)小学语文一年级上册第一单元测试卷及参考答案
- 船舶防锈涂料项目可行性研究报告
- 防汛知识培训开场词课件
- 国内各类广告业务公司劳动协议
- 语文8威科特先生的陷阱
- 共享经济发展对就业市场的影响
- 河北省秦皇岛市实验中学2025-2026学年高二上学期开学考试英语试卷
- 四川省眉山市东坡区2025-2026学年六年级下册语文第二学月综合练习(有答案)
- 内蒙古乌海市第二中学2024-2025学年七年级上学期第一次教学质量摸底检测数学试卷(含答案)
- 新苏教版六年级科学上册活动手册答案
- 新人教版七年级上册初中数学全册教材习题课件
- 《中小学生研学旅行实务》研学旅行指导课程全套教学课件
- 兼任宗教活动场所管理组织负责人备案表
- 化肥欠款协议模板
- 小红书口碑对旅游者目的地决策的影响研究
- 查缉酒驾实战培训课件
- “对校园欺凌说不”主题班会课件
- PLC电气控制设计污水处理系统样本
- 计算机组成原理-鲲鹏
- 青春筑梦强国有我
评论
0/150
提交评论