Linux操作系统课件ppt--第7次 shell编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1认识shell及shell脚本shell——命令解释器,其主要功能是负责解释和执行命令行上键入的内容。shell也提供了完善的编程能力。流行的shell有多种,如Bash、Tcsh、Ksh等。1认识shell及shell脚本shell作用示意图1认识shell及shell脚本Shell类型/bin/sh(最早的shell程序,已经被/bin/bash所取代);/bin/bash(通常情况下Linux系统默认的shell);/bin/ksh(贝尔实验室开发,兼容于bash);/bin/zsh(基于ksh开发,功能更加强大);/bin/csh(语法和C语言相似,更多的考虑了用户界面的友好性);/bin/tcsh(csh的增强版,取代csh,提供更多的功能);1认识shell及shell脚本Bash的重要功能命令和文件补全命令历史记录功能命令别名设置功能通配符功能作业控制、前后台控制1认识shell及shell脚本shellscript就像是早期批处理文件,最简单的功能就是将多条指令汇整写在一起,只需执行一次就可以轻松处理复杂的动作[root@serverroot]#vie1.sh内容如下:#!/bin/bashlsecho“Hello,world!”说明:shell脚本是按行解释的,每个脚本的第一行总是以#!/bin/bash开头在shell脚本中,以“#”开头的行表示注释shell将忽略对该行的处理,即不进行解释、显示和执行认识shell及shell脚本有两种执行shell脚本程序的方法。直接执行1给脚本e1.sh增加执行权[root@serverroot]#chmoda+xe1.sh2键入./el.sh直接执行脚本[root@serverroot]#./e1.she1.shHello,world!键入sh脚本名[root@serverroot]#she1.shHello,world!环境变量环境变量在用户登录时,Linux系统会自动设置一些变量,这些变量的值决定了用户的工作环境和外观,因此称为环境变量。可用“env”(environment)列出所有的环境变量及内容环境变量常用环境变量HOSTNAME:代表主机名称;SHELL:当前环境下使用的shell程序,如果是bash的话,默认是/bin/bash;HISTSIZE:记录曾经执行过的历史命令条数;USER:用户的名称;ENV:用户所用的个性化环境设置文件的读取文件;HOME:代表用户的家目录,很多程序都可能会用到这个变量的值;MAIL:当使用mail命令收信时,系统会去读取的邮件信箱文件;PATH:执行文件搜索的路径。目录之间以冒号(:)分割,顺序很重要,决定查询顺序;PWD:当前工作目录;SHLVL环境变量:SHELL的层数。显示环境变量#echo$变量名环境变量可写的shell环境变量可以对它们进行赋值,大部分可写的shell变量都在登录过程执行/etc/profile文件时初始化用户也可以修改自己的启动文件用户目录/.bash_profile来定制自己的运行环境环境变量一般是大写的,系统启动后自动加载,可写的环境变量用户也可以随时进行修改#[root@localhost~]#echo$PS1[\u@\h\W]\$[root@localhost~]#PS1=[\u@@@\h]***[root@@@localhost]***环境变量设置环境变量用户定义的普通变量通过导出也可以成为环境变量。环境变量就可以被其他的程序或下级子shell所访问。设置的命令是export,其格式如下:export变量名[root@server~]#exportMYVAR=‘hello'[root@server~]#echo$MYVARhello本地用户变量本地变量一般地,shell变量不需要先定义,就可以直接为其赋值,即在赋值的同时完成变量的定义。为变量赋值的格式如下:变量名=变量值[root@serverroot]#a=1注意:在等号的左右两边不能出现空格。本地用户变量当赋值的内容包含空格时,要使用“”将内容括起来,否则只将空格前面的内容赋值给该变量[jacky@bogon~]$tom=”jacky’sfather”[jacky@bogon~]$echo$tomjacky’sfather本地用户变量双引号中出现其它变量名时,在显示内容时会将该变量的内容显示出来,而单引号则只是原封不动的显示字符,即一些特殊字符失去意义。例如[jacky@bogon~]$name=jacky[jacky@bogon~]$test1=’$nameseven’[jacky@bogon~]$echo$test1$nameseven[jacky@bogon~]$test2=”$nameseven”[jacky@bogon~]$echo$test2jackyseven本地用户变量反引号括起来的字符串被shell解释为命令行[jacky@bogon~]$mydate=”mytimeis:`date`”[jacky@bogon~]$echo$mydatemytimeis:2012年3月15日星期四13:20:23CST可使用declare指令来声明变量并设置变量的属性[root@localhost桌面]#declarea=10[root@localhost桌面]#echo$a本地用户变量使用变量值在变量名前加上前缀“$”符号,${variable}echo${mydate}大括号在不引起歧义的情况下也可以省略,以下例子表示使用变量时的不同情况[jacky@bogon~]$name=jacky[jacky@bogon~]$echo${name}seven注:带有大括号相当于拼合字符串jackyseven[jacky@bogon~]$echo$nameseven注:$name和seven间无空格,表空串[jacky@bogon~]$echo$nameseven注:$name和seven间有空格jackyseven本地用户变量清除变量使用“unset”命令将其清除[jacky@bogon~]$tom=”jacky’sfather”[jacky@bogon~]$echo$tomjacky’sfather[jacky@bogon~]$unsettom[jacky@bogon~]$echo$tom特殊变量特殊变量:位置变量和特定变量参数如果要向一个shell脚本传递信息,可以使用位置参数来完成。$0表示命令或shell脚本,无论脚本是否有参数,此值均可用。$1-$9表示位置参数。如果参数个数多于9个,则多出的参数将会被忽略。[jacky@bogon~]$autobak.sh/etc/home/jacky/usr/boot/opt/lib$0$1$2$3$4$5$6autobak.sh/etc/home/jacky/usr/boot/opt/lib特殊变量-位置参数请看以下位置参数示例:[root@servermyshell]#vie2.sh内容如下:#!/bin/bashecho$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11[root@servermyshell]#./e2.shabcdefghijka,b,c,d,e,f,g,h,i,a0,a1特殊变量-位置参数通过shift命令可以实现位置参数的左移,其格式如下:shift[前移量]位置参数移位示例:[root@servermyshell]#cate3.sh#!/bin/shshiftecho$1shift2echo$1[root@servermyshell]#./e3.shabcdbd特殊变量$#传递到shell脚本的参数个数,对上例值为6$*以一个单字符串显示所有向脚本传递的参数。上例代表”/etc/home/jacky/usr/boot/opt/lib”$$脚本运行的当前进程ID号$!后台运行的最后一个进程的进程ID号$@使用时每个参数加引号,上例代表”/etc”“/home/jacky”“/usr”“/boot”“/opt”“/lib”$-显示shell使用的当前选项,与set命令功能相同$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。特定变量参数表示的相关控制信息。打印特殊变量[root@servermyshell]#vispecialvar.sh#!/bin/bashecho'$#is:'$#echo'$*is:'$*echo'$?is:'$?echo'$$is:'$$echo'$0is:'$0元字符元字符:具有特殊的含义与作用,无法像普通字符那样使用它们,如果想把它们用作普通字符(比如说在echo语句中)就需要用一个反斜杠对它们进行转换,当然也可以使用单引号“’”将元字符或者含有元字符的变量字符串括起来,同样可以达到相同的目的。元字符作用例子$取变量值$SHELL或者${SHELL}!取历史指令!3执行历史指令中的第三个指令*N个字符占位符rm*删除所有文件?1个字符占位符rma?删除a开头两个字符文件名的文件&保证指令在后台执行find/-name1.txt&()在子shell中执行一组指令(ls-l;pwd)1.txt\禁用元字符,就是转义符\#[]含义有多种:占位,条件测试[a-z]a-z的所有字符[4=2]~用户主目录|管道符号ls|wc{}占位符号,一组字符ls{dir1,dir2}变量操作read命令:用来从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。一般形式:readvarible1varible2...[jacky@bogon~]$readtestthisisatest[jacky@bogon~]$echo$testthisisatest[jacky@bogon~]$readtest1test2#输入内容第一个空格之后的内容全部赋予最后一个变量thisisatest[jacky@bogon~]$echo$test2isatest变量操作参数功能示例-p允许在read命令行中直接指定一个提示read-pEnteryourname:name-t指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态read-t5-ppleaseenteryourname:name-n后接数字,指示read命令只要接受到该数字个字符就退出。read-n1-pDoyouwanttocontinue[Y/N]?answer-s能够使输入的数据不显示在监视器上(实际上只是将文本颜色设置成与背景色相同,通常用来输入密码)read-s-pEnteryourpassword:pass变量操作expr:该命令一般用于整数值,也可用于字符串。格式:exprargumentoperatorargument[jacky@bogon~]$expr3+5#运算符两侧无空格原样输出3+5[jacky@bogon~]$expr3+5#任何一侧无空格均会被认为是语法错误8[jacky@bogon~]$var=8[jacky@bogon~]$expr$var–5#可以使用变量参与运算3[jacky@bogon~]$expr$var\*8#使用“\”在“*”前避免认为其是通配符64学习ShellScriptshell脚本实质上就是一个文本文件,内容是多条命令和变量通过控制语句结合在一起来完成特定的功能,因此编辑shell脚本可以通过vim来实现。如使用脚本实现环境变量PATH的设置,在屏幕上显示“Ourfirstshellscript\n”提示字符串#vie4.sh#!/bin/bash#firstshellprogramPATH=/bin:/sbin:/usr/sbin:/sur/local/bin:/usr/local/sbin:.exportPATHecho–e“Ourfir

1 / 80
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功