shell编程基础.docx
- 文档编号:3793606
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:8
- 大小:18.35KB
shell编程基础.docx
《shell编程基础.docx》由会员分享,可在线阅读,更多相关《shell编程基础.docx(8页珍藏版)》请在冰豆网上搜索。
shell编程基础
1创建shell脚本文件
创建文件,并且以#!
/bin/bash开头,#!
/bin/bash是必须行(开头行),在脚本文件中加注释可用#开头
=============================文件=============
Eg:
#!
/bin/bash
#显示时间和用户
Date
Who
==================文件结尾====================
2用echo显示消息
当要显示自己的消息时,可以用echozijidexiaoxi来显示
Eg:
在上面文件中加入一行
Echohelloword!
!
运行时即可显示出helloword!
!
当echo显示的消息中有引号(单、双引号)要特别处理,弱消息中有单引号,则应用双引号将整个消息括起,若消息中有双引号,则应用单引号将消息括起。
若要显示消息后不换行,应用echo–n
3使用环境变量
在脚本中我们可以使用$环境变量名称来使用环境变量,若要显示$符号,要使用转义符\。
Eg:
EchoUID:
$UID//$UID使用的是UID环境变量
Echo “much\$15”//使用的是$符号,表示15美元
$环境变量名放在引号内也可被识别:
Echo“UID:
$UID”//使用的是UID环境变量值
4使用用户变量
用户变量名不超过20个字符,由字母,数字,下划线组成
用户变量区分大小写
用户变量临时存储数据并在整个脚本中使用
赋值通过变量=值实现,等号两边无空格
用户变量通过美元符$引用
用户变量自动识别(决定)变量赋值的类型
Eg:
Test1=100
Test2=“helloword!
”
Echo$test1
Echo$test2
5使用反引号
不是单引号’,而是反引号`,和~位于同一个键位
反引号可以将shell命令的输出赋值给变量(用反引号圈起命令)
Eg:
testing=`date`
echo$testing
*注:
当shell命令的结果赋值给变量后,可以用该变量做很多其他的事情。
6重定向输出
重定向可以将一个命令的输出发到一个文件中,常用>实现
Eg:
Date>data.txt
当文件已经存在时,用>重定向覆盖原文件,若要追加在文件结尾,应用>>实现重定向
Ls>>data.txt
7重定向输入
输入重定向可将文件内容输入到命令,用<实现,command 当需要用户在命令行输入内容时,可以用内联重定向<< Wc< 8管道 将一个命令的输出作为另一个命令的输入用|实现 Command1|command2 可以在一条命令中使用任意多管道 Ls–al|more 9数学运算 Expr命令 Expr1+5//加号左右要有空格 Expr3\*5//*号要用转义符转意,否则出错 当将用expr计算的两个数的结果赋值给变量时,要用反引号 Val3=`expr1+5` 使用方括号 当将两个数计算结果赋值给变量时,可用$[]将数学表达式圈起 Val=$[1+5] 10退出脚本 可以用$? 查看上个命令的退出状态码(0-255) Date Echo$? 可查看date命令的退出状态码(正常为0); 可以用exit命令设置脚本的退出状态码 Exit5//设置shell脚本退出状态码为5 11使用if-then语句 格式: Ifcommand Then Commands Fi 运行: 先执行if后的command命令,如果该command命令正常执行(退出状态码为0),则执行then后面的commands命令,如果if后边的命令不正常执行,直接跳过该模块。 ifdate正常工作模块 then echo“Itworked” fi ifadbd//非正常工作模块 then echo“Itnotworked” fi echo“weareoutsideifstatement” 12使用if-then-else语句 格式: Ifcommand Then Commands1 Else Commands2 fi 运行: 先执行if后的command,若正常执行(退出码为0),这执行then后的commands1命令,否则执行else后的commands2命令。 13嵌套if 格式: Ifcommand1 Thencommands1 Elifcommand2 Thencommands2 Elifcommand3 Thencommands3 Fi 运行: 如果command1正常运行(返回状态码为0),则执行commands1部分命令,否则,运行command2命令,若command2正常执行,运行commands2,否则执行command3命令。 总之如果command命令没有正常返回,会一次执行模块中的command命令,直到遇到正常执行的,然后执行该正常执行命令的then部分,退出模块(后面的可正常执行的命令不再执行)。 If-then语句不能测试跟命令的退出状态码无关的条件(if后面的条件必须是命令的退出状态码);如果想实现无关条件测试,可用test命令(if依然是测试命令退出状态码,test命令)。 14Test命令 Test命令格式: testcondition 退出码: 如果condition成立,退出0;否则退出1 If语句使用test命令格式 Iftestcondition Then Commands Fi 其中test命令格式也可用[]替代 If[condition]//左右中括号各有一个空格 Then Commands Fi Test可测试的类型有: 数值比较,字符串比较,文件比较 14.1test数值比较 condition写法: n1–比较n2//数值和比较符中间有空格 比较命令: -eq: 相等-ge: 大于等于-gt: 大于 -le: 小于等-lt: 小于-ne: 不等 Eg: 1–eq25–ne8$val–gt10$val1–lt$val2 数值比较可用在数字和变量上;无法测试浮点型数据。 14.2字符串比较 字符串相等 格式: str1=str2,str1! =str2//等号两端有空格 字符串大小 作用: 测试一个字符串是否逼另一个字符串大 注意: 大于小于符号必须转意;大于小于顺序与sort不同 格式: str2\>str2 当处理字符大小写时,test用的是字符的ASCII编码表示大小,sort命令用字符在本地化语言中的排序表示大小。 (test中小写字符大于大写字符,sort命令中大写字符大于小写字符) 非空检查 -n和–z参数用来检查一个变量是否含有数据 -n: 检查是否有内容,有内容时返回0,否则返回非0(命令非正常退出); -z: 检查是否为空。 为空时返回0,否则返回非0. 14.3文件比较 文件比较常用参数: -dfile//检查file是否存在并是一个目录 -efile//检查file是否存在 -ffile//检查file是否存在并是一个文件 -rfile//检查file是否存在并可读 -sfile//检查file是否存在并非空 -wfile//检查file是否存在并可写 -xfile//检查file是否存在并可执行 -Ofile//检查file是否存在并属当前用户所有 File1–ntfile2//检查file1是否逼file2新 File1–otfile2//检查file1是否逼file2旧 检测目录 -d检测是否是目录并且是否存在,当将文件放置到目录下时非常有用。 -d$HOME 检测对象是否存在 -e可以在使用对象(文件或目录)前,检查其是否存在 检查文件 要确定指定的对象是个文件,不许用–f比较 检查是否可读 在从文件中读取数据前,应用-r对文件可读性进行测试 检查空文件 可以用-s检查文件是否为空,在删除文件时要特别检查。 检查是否可写 在向文件写内容前,先用-w检查是否可写 检查文件日期 在编写安装脚本的时候进行日期检查非常有用(检查要安装的文件是否比已安装的文件晚) -nt判断一个文件是否逼另一个文件新, -ot判断一个文件是否比另一个文件老。 15复合条件测试 If–then语句可以使用布尔逻辑组合测试。 两种布尔逻辑可用: &&与逻辑 ||或逻辑 格式: [condtion1]&&[condition2] [condition1]||[condition2] 16If-then的高级属性 1: 用于数学表达式的双圆括号 2: 用于高级字符串处理功能的双方括号 双圆括号 格式: ((表达式)) 作用: 可支持数学表达式的扩展(自增/减,与、或、非、左移,右移,取反等) 双方括号 双方括号可支持对字符串的高级处理。 格式: [[表达式]] *特殊注意(细节) 1: shell脚本处理数据时,只能处理整数;如果数据为浮点数,应特殊处理。 2: If-then语句不能测试跟命令的退出状态码无关的条件(if后面的条件必须是命令的退出状态码);如果想实现无关条件测试,可用test命令(if依然是测试命令退出状态码,test命令)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- shell 编程 基础