Shell脚本编程基础知识.ppt
《Shell脚本编程基础知识.ppt》由会员分享,可在线阅读,更多相关《Shell脚本编程基础知识.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux 操作系统Shell 脚本编程脚本编程主要内容和学习要求主要内容和学习要求q 掌握创建 shell 脚本的基本步骤q 学会使用条件测试q 掌握 if 条件结构与 case 选择结构q 掌握 for 循环、while 循环和 until 循环结构q 学会 shift 命令的使用q 学会 shell 脚本的调试q Shell 脚本Shell 脚本脚本n如果有一系列你经常使用的如果有一系列你经常使用的Linux命令,你可命令,你可以把它们存储在一个文件里,以把它们存储在一个文件里,shell可以读取这可以读取这个文件并顺序执行其中的命令,这样的文件被个文件并顺序执行其中的命令,这样的文件被
2、称为脚本文件。称为脚本文件。shell 脚本脚本按行解释。按行解释。q Shell 脚本的编写l Shell 脚本是纯文本文件,可以使用任何文本编辑器编写l Shell 脚本通常是以 .sh 作为后缀名q Shell 脚本的执行chmod +x script_name./script_namebash script_nameu 第一行:指定用哪个程序来编译和执行脚本。q Shell 脚本的格式脚本的格式#!/bin/bashu 可执行语句和 shell 控制结构u 注释:以 “ # ” 开头,可独占一行,或跟在语句的后面。Shell 脚本脚本#!/bin/sh#!/bin/csh一个 shel
3、l 脚本通常由一组 Linux 命令、shell 命令、控制结构和注释语句构成。在脚本中多写注释语句是一个很好的编程习惯 #!/bin/bash# This is the first Bash shell program # ScriptName: greetings.shechoecho e Hello $LOGNAME, cecho its nice talking to you.echo Your present working directory is:pwd # Show the name of present directoryechoecho e The time is date
4、 +%T!. nByeechobash greetings.shchmod +x greetings.sh./greetingsShell 脚本举例脚本举例echo命令n功能说明:显示文字。 n语 法:echo -ne字符串 或 echo -help-version n补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。n-n 不进行换行不进行换行n-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出 n 换行换行 b 空格空格.参 数:n-n 不要在最后自动换行 n-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成
5、一般文字输出:na 发出警告声; nb 删除前一个字符; nc 最后不加上换行符号; nf 换行但光标仍旧停留在原来的位置; nn 换行且光标移至行首; nr 光标移至行首,但不换行; nt 插入tab; nv 与f相同; n 插入字符; nnnn 插入nnn(八进制)所代表的ASCII字符; n-help 显示帮助 n-version 显示版本信息#!/bin/bash# This script is to test the usage of read# Scriptname: ex4read.shecho = examples for testing read =echo -e What
6、is your name? cread nameecho Hello $nameechoecho -n Where do you work? readecho I guess $REPLY keeps you busy!echoread -p Enter your job title: #自动读给自动读给REPLYecho I thought you might be an $REPLY.echoecho = End of the script =Shell 脚本举例脚本举例read命令命令nread variable #读取变量给读取变量给variablenread x y #可同时读取多个
7、变量可同时读取多个变量nread #自动读给自动读给REPLYnread p “Please input: ” #自动读给自动读给REPLYu 状态变量 $? 中保存命令退出状态的值grep $USER /etc/passwdecho $?grep hello /etc/passwd; echo $?条件测试条件测试u 条件测试可以根据某个特定条件是否满足,来选择执行相应的任务。u Bash 中允许测试两种类型的条件: 命令成功或失败,表达式为真或假u 任何一种测试中,都要有退出状态(返回值),退出状态为 0 表示命令成功或表达式为真,非0 则表示命令失败或表达式为假。q 内置测试命令 tes
8、tl 通常用 test 命令来测试表达式的值x=5; y=10test $x -gt $yecho $?l test 命令可以用 方括号方括号 来代替x=5; y=10 $x -gt $y echo $?q 表达式测试包括字符串测试、整数测试和文件测试。测试表达式的值测试表达式的值方括号前后要留空格!name=Tom $name = Tt? echo $?l 2.x 版本以上的 Bash 中可以用双方括号双方括号来测试表达式的值,此时可以使用通配符通配符进行模式匹配模式匹配。测试表达式的值测试表达式的值 $name = Tt? echo $?q 字符串测试字符串测试 -z str 如果字符串
9、str 长度为 0,返回真 -n str 如果字符串 str 长度不为 0,返回真 str1 = str2 两字符串相等 str1 != str2 两字符串不等name=Tom; -z $name ; echo $?操作符两边必须留空格!字符串测试字符串测试name2=Andy; $name = $name2 ; echo $?q 整数测试,即比较大小 int1 -eq int2 int1 等于 int2 int1 -ne int2 int1 不等于 int2 int1 -gt int2 int1 大于 int2 int1 -ge int2 int1 大于或等于 int2 int1 -lt i
10、nt2 int1 小于 int2 int1 -le int2 int1 小于或等于 int2x=1; $x -eq 1 ; echo $?x=a; $x -eq 1 ; echo $?整数测试整数测试操作符两边必须留空格!Xq 整数测试也可以使用 let 命令或双圆括号x=1; let $x = 1; echo $?x=1; ($x+1= 2 ); echo $? 只能用于整数测试!只能用于整数测试!整数测试整数测试l 相应的操作符为:= 、!= 、 、= 、 、 y ); then echo x is larger than yelif ( x = y); then echo x is eq
11、ual to yelse echo x is less than yfichkperm.sh#!/bin/bash# Using the old style test command: # : perm_check.sh#if -d $file then echo $ a directory elif -f $file then if -r $ -w $ -x $file then # nested if command echo You have read,write,and execute permission on $file. fielse echo $ neither a a dir
12、ectory. fichkperm2.sh#!/bin/bash# Using the new style test command: # : perm_check2.sh#if -d $file then echo $ a directory elif -f $file then if -r $ -w $ -x $file then # nested if command echo You have read,write,and execute permission on $file. fielse echo $ neither a a directory. finame_grep#!/bi
13、n/bash# : name_grep#name=Tomif grep $name /etc/passwd & /dev/null then :else echo $name not found in /etc/passwd exit 2fitellme#!/bin/bashecho -n How old are you? read ageif $age -lt 0 -o $age -gt 120 thenecho Welcome to our planet! exit 1 fiif $age -ge 0 -a $age -le 12 thenecho Children is the flow
14、ers of the countryelif $age -gt 12 -a $age -le 19 thenecho Rebel without a causeelif $age -gt 19 -a $age -le 29 then echo You got the world by the tail!elif $age -ge 30 -a $age -le 39 thenecho Thirty something.elseecho Sorry I askedfitellme2#!/bin/bashecho -n How old are you? read ageif ( age 120 )
15、thenecho Welcome to our planet! exit 1 fiif (age = 0 & age = 13 & age = 19 & age = 30 & age 0 ) # or $# -gt 0 do echo $* shiftdoneshft.sh#!/bin/bash# Using shift to step through all the positional parameters.until -z $1 # Until all parameters used up.do echo $1 shiftdoneecho # Extra line feed.exit 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Shell 脚本 编程 基础知识
限制150内