如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第10讲Shell脚本编程(1)JamesHoSept.2012Reference:O'Reilly,LearningthebashShell(3rded,2005)目录•Shell编程的概念•变量•程序的结构化•函数2什么是shell脚本•什么是shell脚本?•一系列shell命令组成的可以执行的(文本)文件,被称为shell脚本(script)•由shell对其解释执行3shell编程的特点•与其他计算机语言的相似之处:–由变量(variables),函数(functions)等组成–有结构化的处理(循环/分支)•与其他计算机语言不同之处–最终的执行语句都是shell的命令(内部或外部)–可读性相对较差–它是解释并运行的程序4Linux中的典型脚本•sampleof.bashrc1#ifrunningbash2if[-n"$BASH_VERSION"];then3#include.bashrcifitexists4if[-f"$HOME/.bashrc"];then5."$HOME/.bashrc"6fi7fi89#setPATHsoitincludesuser'sprivatebinifitexists10if[-d"$HOME/bin"];then11PATH="$HOME/bin:$PATH"12fi5最简单的shell程序•首行#!/bin/bash#!/bin/bash#test1.shechothisismyfirstscript#!/bin/bash#test2.shwhodate6最简单的shell程序#!/bin/bashechoThetimeanddateis:dateechoWhoareloggedintothesystem:who#!/bin/bashecho-nThetimeanddateis:dateechoWhoareloggedintothesystem:who7最简单的shell程序•另一种运行脚本的方法sourcescript•示例8变量(variables)•shell中的变量种类•环境变量–shell运行时预定义的,影响shell行为的变量•用户变量–用户在shell编程中自定义的变量–全局变量/局域变量•位置变量–为传递shell命令行参数使用的变量9环境变量环境变量名意义PATH搜索命令或程序的所有路径PWD当前工作目录的路径PS1,PS2shell主提示符,二级提示符TERM终端类型HOME主目录IFSshell使用的分隔符MANPATH搜索帮助手册的路径(以冒号分隔)SHELLshell的路径名EDITOR默认的行编辑器PPID父进程ID号10环境变量•使用环境变量的脚本示例#!/bin/bash#test4.sh#displaytheuserinformationfromthesystemecho“Userinfoforuserid:$USER”echoUID:$UIDechoHOME:$HOME11用户变量•定义与赋值(1)var=value•要点1:等号两边不能有空格•要点2:变量的值都是字符串•要点3:当赋值中有空格或者其他特殊字符时,需使用双引号“”12用户变量•示例$str=Hello#正确$str=howareyou?#错误,空格问题$str=“howareyou?”#错误,空格问题$str=“howareyou?”#正确$$echostr#不是引用变量的值$echo$str#引用变量的值13用户变量•定义与赋值(2)–指定类型的定义declare[option][var[=value]]•要点1:使用option定义多种属性的变量•要点2:允许以只定义,不赋值(null)14用户变量•用户变量示例#!/bin/bash#test5.sh#testingvariablesdays=10guest=“Katie”echo“$guestcheckedin$daysdaysago”days=5guest=“Jessica”echo“$guestcheckedin$daysdaysago”15用户变量•引用变量的值–在变量名前加$表示引用该变量的值$var#得到变量var的值${var}#得到变量var的值•要点:未定义变量返回null值•问题