linux下bash编程

上传人:c****d 文档编号:243009812 上传时间:2024-09-13 格式:PPT 页数:40 大小:86.50KB
返回 下载 相关 举报
linux下bash编程_第1页
第1页 / 共40页
linux下bash编程_第2页
第2页 / 共40页
linux下bash编程_第3页
第3页 / 共40页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第四章 shell程序设计,1,4.1 shell 概 述,命令解释程序,高级程序设计语言,2,第一个bash程序,#!/bin/bash,# 这个程序将打印“Hello World”到屏幕上,echo Hello World,$ chmod u+x ./hello.sh,$ ./hello.sh,3,更有用的程序,$ mkdir trash,$ mv * trash,$ rm -rf trash,$ mkdir trash,#!/bin/bash,mkdir trash,mv * trash,rm -rf trash,mkdir trash,echo Deleted all files!,4,注释,以“#”开头,第一行(“#!/bin/bash”)除外,5,4.2 shell 变 量,所有变量的取值都是一个字符串,可以现定义、现赋值,例子:,#!/bin/bash,x=12,echo The value of variable x is $x,6,使用shell变量,shell变量的变量名是以字母或下划线开头的字母、数字和下划线的字符序列,字母区分大小写。,定义变量并赋值的一般形式是:,变量名=变量值,用$var的形式来引用名为var的变量的值,7,两种shell变量,环境变量:永久性变量,其值不会随shell程序执行结束而消失。,本地变量:在shell程序内部定义的,其使用范围仅限于定义它的程序,出了程序就不能再用,8,使用shell变量(深入),设置一个变量只读:,readonly 变量名,将一局部变量提供给shell执行的其他命令使用:,export 变量名,9,4.3 控 制 性 结 构,if语句,while语句,until语句,for语句,case语句,10,4.3.1 if语句,基本格式是:,if,命令,then,命令组,1,else,命令组,2,fi,11,例子,#!/bin/bash,if test -f /etc/foo,then,#,文件存在,则拷贝文件然后打印出一个信息,cp /etc/foo .,echo Done.,else,#,文件不存在,则打印出一个信息然后离开,echo This not exist.,exit,fi,12,test命令,-,d,检查此,file,是否是一个目录,-,e,检查此,file,是否存在,-,f,检查此,file,是否为一般的文件,-,g,检查此,file,是否有,SGID,权限,-,r,检查此,file,是否可以读取,-,s,检查此,file,大小是否不为,0,-,u,检查此,file,是否有,SUID,权限,-,w,检查此,file,是否可以写入,-,x,检查此,file,是否可以执行,13,test的另外写法,if test -f /etc/foo,then,if -f /etc/foo ; then,14,4.3.2,while,语句,语法格式,while,命令,do,命令组,done,15,例子,#!/,bin/bash,while true; do # while :; do,echo “Press CTRL-C to quit.”,done,#!/bin/bash,x=0;#,设定,x,初值为,0,while $x -le 10 ; do,echo Current value of x: $x,#,增加,x,的数值:,x=$(expr $x + 1),sleep 1,done,16,检查条件,检查在数值之间的比较:,x -eq y,检查,x,和,y,是否相等,x -ne y,检查,x,和,y,是否不相等,x -gt y,检查,x,是否大于,y,x -lt y,检查,x,是否小于,y,检查在字符串之间的比较:,x = y,检查,x,与,y,是否相同,x != y,检查,x,与,y,是否不相同,-,n x,若,x,不是空字符串(,null,),则为真,-z x,若,x,是空字符串(,null),则为真,17,4.3.3 until,语句,命令格式,until,命令,do,命令组,done,18,例子,#!/,bin/bash,x=0,until $x -ge 10 ; do,echo Current value of x: $x,x=$(expr $x + 1),sleep 1,done,19,4.3.4 for,语句,for,语句的结构是:,for,变量,in,参数,1,参数,2,参数,n,do,命令组,done,20,例子,#!/,bin/bash,echo -n “Checking system for errors”,for dots in 1 2 3 4 5 6 7 8 9 10; do,echo -n “.”,echo “System clean.”,done,#!/,bin/bash,for x in paper pencil pen; do,echo “The value of variable x is: $x”,sleep 1,done,21,更实用的例子,要求:,给当前目录里的所有文件加后缀名“,.html,”,#!/,bin/bash,for *; do,echo “Adding .html extension to $file.”,mv $file $,sleep 1,done,22,4.3.5 case,语句,语法格式:,case,变量,in,模式,1),命令组,1;,模式,2),命令组,2;,模式,n),命令组,n,esac,23,例子,#!/,bin/bash,x=5#,设定,x,初值为,5,#,现在检查,x,的数值:,case $x in,0) echo “Value of x is 0.”,;,5) echo “Value of x is 5.”,;,9) echo “Value of x is 9.”,;,*) echo “Unrecognized value.”,esac,24,4.4,引,号,双引号,(double quote),”,单引号,(forward quote),反单引号,(back quote),25,双引号,$,mkdir hello world,$ mkdir “hello world”,26,单引号,例:,#!/,bin/bash,x=5 #,设定,x,初值为,5,#,使用双引号,echo “Using double quotes, the value of x is: $x”,#,使用单引号,echo Using forward quotes, the value of x is: $x,27,反单引号,例:,x=$(expr $x + 1),x=expr $x + 1,28,4.5,算,术,运,算,expr,命令,$(.),例子:,#!/,bin/bash,x=8#,设定,x,初值为,8,y=4#,设定,y,初值为,4,#,现在我们将,x,和,y,的总合之值设定到,z,:,z=$($x + $y),echo “The sum of $x + $y is $z”,29,其它运算,运,算,运算符,Addition /,加,+,Subtraction /,减,-,Multiplication /,乘,*,Division /,除,/,Modulus /,取余,%,30,4.6 读取使用者输入,read,命令,例子:,#!/,bin/bash,#,取得到使用者的名字,打印出问候语,echo -n “Enter your name:”,read user_name,echo “Hello $user_name!”,31,4.7,函,数,#!/,bin/bash,#,函数,hello(),只是打印出一个信息,hello(),echo “You are in function hello()”,echo “Calling function hello().”,#,调用,hello(),函数:,hello,echo “You are now out of function hello()”,32,4.8 TRAPPING,trap,使用下列的语法:,trap action signal,信号量,1)SIGHUP,2)SIGINT,3)SIGQUIT,9)SIGKILL,15) SIGTERM,33,例子,#!/,bin/bash,#,使用,trap,命令,#,trap CTRL-C,执行,sorry(),函数:,trap sorry INT,#,函数,sorry(),打印出一个信息,sorry(),echo “Im sorry Sir. I cant do that.”,sleep 3,#,从,10,数到,1,:,for i in 10 9 8 7 6 5 4 3 2 1; do,echo “$i seconds until system failure.”,sleep 1,done,echo “System failure.”,34,4.9 AND & OR,条件,1 &,条件,2,条件,1 |,条件,2,例子:,#!/,bin/bash,x=5,y=10,if “$x” -eq 5 then,echo “Both conditions are true.”,else,echo “The conditions are not true.”,fi,35,4.10,使,用,参,数,$0 . $9 $#,#!/,bin/bash,#,打印第一个参数,#,首先检查是否有一个参数:,if “$#” -ne 1 ; then,echo “usage: $0”,fi,echo “The argument is $1”,36,4.11,临,时,文,件,“ $”符号,$ touch hello.$,37,4.12,返,回,值,$?,变量,例子,#!/,bin/bash,# grep,使用者,foobar,,,并用导引所有输出到,/,dev/null,:,grep “foobar” /dev/null 2&1,#,抓取返回值,并且做些动作:,if “$?” -eq 0 ; then,echo “Match found.”,exit,else,echo “No match found.”,fi,38,用户程序返回值的例子,例:,#!/,bin/bash,if -f “/etc/passwd” ; then,echo “Password .”,exit 0,else,echo “No such file.”,exit 1,fi,39,函数返回值的例子,check_passwd(),#,检查是否,passwd,文件存在:,if -f “/etc/passwd” ; then,echo “Password .”,#,有找到,传回一个,0,值:,return 0,else,#,找不到,传回一个,1,值:,echo “No such file.”,return 1,fi,#,从函数,check_passwd,取得返回值:,foo=check_passwd,#,检查数值:,if “$foo” -eq 0 ; then,echo “.”,exit 0,else,echo “No such file.”,exit 1,fi,40,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!