LinuxShell编程基础授课:杨建新脚本编程传统的DOS批处理文件(*.bat)Windows脚本:vbscript(*.vbs)Javascript(*.js)UnixShell脚本指定脚本执行所使用的shell如果Script的第一个非空字符不是"#",则它会使用Bourne Shell。如果Script的第一个非空字符是"#"时,但不以"#!"开头时,则它会使用C Shell。如果Script以“#!”开头,则“#!”后面所写的就是所使用的Shell,而且要将整个路径名称指出来*建议使用第3种方法执行shell脚本程序的方法shellnamescriptname.scriptname在shell中使用变量Bourne Shell的变数类型只有字串变量,所以要使用数值运算则必须靠外部命令达到目的变量主要包括用户变量和系统变量两类为变量赋值:var=string取用变量时则在变量名称前加上一“$” 号如果需要处理数值运算,可以使用expr命令expr用法expr一般用于整数值计算,常用于程序计数器,实例如下:expr10+10expr10\*10expr30/10常用系统变量$HOME 使用者自己的目录$PATH 执行命令时所搜寻的目录$TZ 时区$MAILCHECK 每隔多少秒检查是否有新的信件$PS1 在命令列时的提示号$PS2 当命令尚未打完时,Shell 要求再输入时的提示号 $MANPATH man 指令的搜寻路径 实例1#!/bin/shname=yangecho$nameecho$PATHPATH=$PATH:$HOME/binecho$PATHi=0i=`expr$i+3`echo$i使用特殊变量$0 这个程序的执行名字 $n 这个程序的第n个参数值,n=1..9 $* 这个程序的所有参数 $# 这个程序的参数个数 $$ 这个程序的PID $! 执行上一个背景指令的PID $? 执行上一个指令的返回值 使用shift 命令可以将参数后移实例2:testvar#!/bin/shecho Filename: $0 echo Arguments: $*echo Number of args.: $# echo 2nd arg.: $2 shift echo Number of args.: $# echo 2nd arg.: $2 set hello, world echo Arguments: $* echo 2nd arg.: $2 执行shtestvarthisismyshellscript获取用户输入使用read命令可以获取用户的输入并赋予变量read var1 var2.....实例3#!/bin/shechoPleaseinputyourname:readnameechoYournameis:$name条件测试测试文件状态-d:目录-s:文件非空-f:正规文件-w:可写-L:符号链接-u:文件有suid位-r:可读-x:可执行条件测试比较
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式-eq=字符串:-ne!=-gt>-n:非空串-lt<-z:空串-le<=-ge>=条件测试逻辑操作-a,&&-o,||!条件测试#[-f/etc/passwd-a-f/etc/inittab]#echo$?0#[-x/etc/passwd-o-x/bin/sh]#echo$?0流程控制:分支结构if...then...else…fiif...then...elif...then…ficasevarinstring1) command... ;;*)command...;;esac实例4#!/bin/shuntilechoListDirectory..........1echoChangeDirectory....2echoEditFile...........…….3echoRemoveFile.............4echoExitMenu...........…..5echoPleaseinputyourchoice:readchoicetest$choice=5docase$choicein1)ls;;2)echoEntertargetdirectoryreaddircd$dir;;3)echoEnterfilenamereadfilevi$file;;4)echoEnterfilenamereadfilerm$file;;q|Q|5)echoGoodbyeexit;;*)echoillegalOptionesacdone流程控制:循环结构for循环:forvarin[list]docommands...donewhile循环:while[condition]docommands...done流程控制:循环结构until循环:until[condition-is-true]docommands...done循环控制:break,continuebreak:跳出循环或case语句continue:跳过本次循环实例5#!/bin/shnumber=1while[$number-le10]douseradduser$numberechoAddauserwhosenameis:user$numbernumber=`expr$number+1`done建立10个用户帐户实例6#!/bin/shcounterf=0counterd=0forfilesin*doif[-f$files];thencounterf=`expr$counterf+1`elif[-d$files];thencounterd=`expr$counterd+1`fidoneecho"Thereare$counterffilesin`pwd`directory."echo"Thereare$counterddirectorysin`pwd`directory."查看目录中包含的文件数量和子目录数量