版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Unix Shell编程基础培训北京顶测科技有限公司课程目标熟练编写Unix Shell程序 内容提纲Shell介绍Shell脚本介绍Shell特性正则表达式变量与运算符Shell的输入与输出条件测试控制流语句Shell函数脚本参数传递Shell-UNIX 命令解释器问题引入: DOS系统的命令由command负责执行,并且对重覆性或多个命令运行可写成批处理文件,只要执行这个批处理文件就等於执行这些命令。UNIX系统如何处理?Shell: shell是一种命令语言,同时又是一种程序设计语言。 UNIX系统利用shell命令解释器(command-language interpreter) ,完
2、成用户输入命令的执行,是用户与系统交互的界面,是命令与kernel之间的接口。 shell接收用户输入的命令,对命令作出解释,然后发送给kernel执行之。 shell是一个解释型的程序设计语言。 shell程序( 脚本)相当于dos的批处理文件,可简单到只有一条命令,也可以包括循环、条件语句、数学运算、控制结构的程序,完成复杂的管理任务。Shell-UNIX 命令解释器Shell脚本介绍为什么使用Shell脚本?批量命令重复、条件等控制Shell脚本的基本内容#!/bin/sh第一行注释:#第二行变量第三行条件判断、循环第四行脚本的运行方式chmod ?+x 脚本./脚本文件名Shell脚本
3、介绍示例:hello.sh#!/bin/bash#这是一个基本的shell脚本op=hello worldecho $opShell特性别名命令替换管道重定向后台处理模式匹配变量特殊字符别名aliasEg:alias ll=ls -alh命令替换myfile 的内容如下:marm findfile实现替换如下:ls cat myfile -al后台处理什么是后台?一个终端可以同时运行多个程序用法:nohup command &可以再后台运行此命令示例:nohub tar -czf 要压缩的文件名 压缩后的文件名 &查看后台命令使用:jobs l 变量示例:#!/bin/bash#这是一个基本的
4、shell脚本printchar = “hello world”echo $printchar变量用来存储信息管道( | )把一个命令的输出连接到另一个命令的输入。示例:ls | sortcat func.txt | grep -v #重定向( )与管道相关,可以改变程序运行的输入来源和输出地点示例:sort myfile.txt对文件中内容进行排序sort myfile_test.txt模式匹配显示以txt为扩展名的文件或显示以a开头的文件,这种情况称为模式匹配。实现方式:正则表达式如:ls *.txt模式匹配: 正则表达式正则表达式在 shell、工具程序、Perl 语言中有非常重要的地位
5、。正则表达式通过一些特殊符号表示特定的字符串模式。常见的特殊字符包括:字符 功能 置于待搜索的字符串之前,匹配行首的字$ 置于待搜索的字符串之后,匹配行末的字 匹配一个字的字尾. 匹配任意单个正文字符str 匹配字符串 str 中的任意单个字符str 匹配不在字符串 str 中的任意单个字符a-c 匹配从 a 到 c 之间的任一字符* 匹配前一个字符的 0 次或多次出现 忽略特殊字符的特殊含义,将其看作普通字符模式匹配: 正则表达式扩充的特殊字符:字符 功能+ 重复匹配前一项 1 次以上? 重复匹配前一项 0 次或 1 次j 重复匹配前一项 j 次j, 重复匹配前一项 j 次以上, k 重复匹
6、配前一项最多 k 次j, k 重复匹配前一项 j 到 k 次s | t 匹配 s 或 t 中的一项(exp) 将表达式 exp 作为单项处理基本元字符集元字符含义只匹配行首$只匹配行尾*匹配0或多个字符 匹配 内字符屏蔽元字符的特殊含义.匹配任意单字符模式n匹配模式出现次数,n模式n,m模式次数,至少为n模式n,m模式出现在n,m之间模式匹配: 正则表达式匹配行首/行尾行首:行尾:$举例查找当前目录下面所有子目录ls l |grep “d”查找文本文件中,以a开头的行more a.txt |grep “a”查找文本文件中,以a结尾的行more a.txt |grep “a$”查找文本文件中,所
7、有的空行more a.txt |grep “$”模式匹配: 正则表达式匹配单个字符模式:举例.abc.可以匹配12abc34, ababc43等模式匹配: 正则表达式匹配0或多个字符模式:*举例abc12*可以匹配如下abc123abc14248876abc11abc模式匹配: 正则表达式匹配单词模式:功能:匹配完整的单词举例模式匹配: 正则表达式屏蔽特殊字符功能:将字符串中的特殊字符去掉特殊意义特殊字符$ . “ * | ( ) + ?举例匹配包含.字符的行:.匹配包含$的行: $匹配包含的行:模式匹配: 正则表达式匹配范围功能:匹配特定的字符串或字符串集举例 或0-9:匹配任意数字A-Za
8、-z:匹配任意字母aa-zA-Zt:a开始任意字母thHello:匹配Hello或者hello0-9:匹配任一个非数字字符a-zA-Z:匹配任一个非字母字符模式匹配: 正则表达式匹配模式结果出现次数patternn匹配模式出现n次。patternn,匹配模式出现最少n次。patternn,m匹配模式出现n到m次之间,n , m为0 - 255中任意整数。模式匹配: 正则表达式举 例A2BAABA4,BAAAAB, AAAAAB, AAAAAABA2,4BAAB,AAAB,AAAAB模式匹配: 正则表达式练习从如下文本中,选出日期格式符合yyyy.mm.dd的行2006-05-17 chenyq
9、20060711 suwn2006.07.19 aaa2005/11/25 bbb过滤模式:0-94.0-92.0-92模式匹配: 正则表达式特殊字符双引号(“):用来使shell无法认出空格、制表符和其他大多数特殊字符,这样“David Medinets”表示一个值。单引号():用来使shell无法认出所有特殊字符。反引号():用来替换命令。反斜杠():用来使shell无法认出以上的特殊字符,使其后的特殊字符失去特殊含义。如:David Medinetsrootsky /root# touch David Medinetsrootsky /root# ls David medinets特殊字
10、符分号(;):允许在一行上放多个命令。Eg:mv a.txt b ; mv d.txt e&:命令后执行。括号():创建成组的命令。大括号 :创建命令块。竖杆(|):管道标示符。 &:表示重定向。* ? !:表示模式匹配。$:变量名的开头。#:表示注释(第一行除外)。空格,制表符,换行符:当做空白。变量与运算符本地变量环境变量变量替换位置变量标准变量特殊变量影响变量的命令引号运算符表达式替换运算符优先级变 量什么是shell变量本地变量环境变量变量替换位置变量标准变量特殊变量影响变量的命令本地变量本地变量在用户现在的shell生命期的脚本中存在使用。variable-name=value设置变
11、量及值set 显示本地所有的变量readonly variable-name变量只读设置后不能在设置回来了。本地变量(续)rootjack /root# LOCALTEST=“test”rootjack /root# echo $LOCALTESTtestrootjack /root# readonly LOCALTESTrootjack /root# LOCALTEST=“test1”Bash:LOCALTEST: readonly variablerootjack /root# readonly -p查看当前设置的本地变量Declare r LOCALTEST=“test”Declare
12、ir UID=“0”示例:环境变量用于所有用户进程(称为子进程)。登录进程称为父进程。Shell中执行的用户进程均称为子进程。不像本地变量(只用于当前的shell),环境变量可用于所有子进程,包括编辑器、脚本和各种应用程序。$HOME/.bash_profile(/etc/profile)export用于设置环境变量env查看环境变量eg:export SITECH=“BeiJing”readonly SITECH设置只读环境变量如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下: $ export TEST=Test. #增加一个环境变量TEST$ readonly T
13、EST #将环境变量TEST设为只读$ unset TEST #会发现此变量不能被删除-bash: unset: TEST: cannot unset: readonly variable$ TEST=New #会发现此也变量不能被修改-bash: TEST: readonly variable环境变量用C程序来访问和设置环境变量 使用下列三个函数来设置或访问一个环境变量。 getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL。 setenv()在程序里面设置某个环境变量的函数。 unsetenv()清除某个特定的环境
14、变量的函数。 有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可以打印出当前运行环境里面的所有环境变量: #include extern char*environ;int main ()char*var;for (var =environ;*var !=NULL;+var)printf (%s n ,*var);return 0;还可以通过修改一些相关的环境定义文件来修改环境变量,比如对于Red Hat等Linux发行版本,与环境相关的文件有/etc/profile和/.bashrc等。修改完毕后重新登录一次就生效了。 变量替换用变量的值替换它的名字。Echo在
15、变量名前加$,使用echo命令可以显示单个变量取值。例如:rootjack /root# testvar=“this is a test”rootjack /root# echo $testvarthis is a test变量替换(续)1.echo $variable name显示实际值到variable name中2.echo $variable name:+value如果设置了variable name,则显示其值value,否则显示为空。3.echo $variable name:?value如果未设置variable name,则显示用户自定义的错误信息value。4.echo $v
16、ariable name:-value如果未设置variable name,则显示其值value。否则显示原来值。5.echo $variable name:=value如果未设置variable name,设置其值为value,并显示。变量替换(续)Unset删除环境变量Unset variable-name例如:rootjack /root# testvar=“this is a test”rootjack /root# echo $testvarThis is a testrootjack /root# unset testvarrootjack /root# echo $testvar
17、rootjack /root# 如果是readonly 的变量是不能进行取消删除的。位置变量位置变量表示形式:$0,$1,$2$9向脚本中使用位置参数向系统命令传递参数$0$1$2$03$04$5$6$7$8$9脚本名字ABCDEF标准变量bash默认建立了一些标准环境变量,可在/etc/profile中定义。EXINITHOMEecho $HOME IFSLOGNAMEecho $LOGNAME 获取当前登录名set | grep LOG 与之功能等价MAILset | grep MAIL MAIL=/usr/spool/mail/account存放邮箱位置MAILCHECK=600每隔60
18、0秒扫描邮箱一次MAILMSG=YOU HAVE NEW MAIL邮箱信息MAILCHECK标准变量MAILPATHPATH eg: set | grep PATH 取得环境路径PS1 eg: set | grep PS 改变命令提示符信息PS2SHELL eg: set | grep SHELL 取得当前SHELL信息TERMINFO eg: set | grep TERMINFO TERM eg: set | grep TERM 显示终端类型TZ eg: set | grep TZ 表示时区EDITORPWD eg: set | grep PWD 取得当前目录信息MANPATH eg: s
19、et | grep MANPATH 特殊变量$#: (传递到脚本的参数个数)$*: (以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个)$: (脚本运行的当前进程 ID号)$!: (后台运行的最后一个进程的进程ID)$: (与$#相同,但是使用时加上引号,并在引号中返回每个参数)$-: (显示shell使用的当前选项,与set命令功能相同)$?: (显示最后命令的退出状态。0表示没有错误,其它任何值表示有错误)影响变量的命令readonly用于显示或设置只读变量- 表明选项结束-f 创建只读变量set设置或重设各种shell影响变量的命令unset用于取消变量的定义
20、- 表明选项结束-f 删除只读变量,但不能取消从shell环境中删除指定的变量和函数。如: PATH,PS1,PS2,PPID,UID,EUID 等的设置。运算符运算符类型位运算符, , &, |, $ 表示对方括号中的表达式进行求值$24例如:#!/bin/bash# $ 表示举例echo $2+8运算符位运算符运算符说明op1反运算符,把op1中所有的二进制位的1变为0,0变为1。op1op2右移运算符,把op1中的二进制位向右移动op2位,忽略最右端移出的各位,最左端的各位补上0值,每做一次按位右移就有实现op1除以2op1&op2与比较运算符,比较op1和op2对应位,对于每个二进制位
21、来说,如果二者该位都是1,则结果为1;否则,结果为0。op1op2异或比较运算符,比较op1和op2对应位,对于每个二进制位来说,如果二者该位互补,则结果为1;否则,结果为0。op1 | op2或运算符,比较op1和op2对应位,对于每个二进制位来说,如果二者该位有一个是1或者都是1,则结果为1;否则,结果为0。运算符运算符类型逻辑运算符赋值运算符运算符说明&与运算符|或运算符,=,!=+=、-=、*=、/=、%=、&=、=、|=、=eg: var=65 let var+=4 echo $var/69表达式替换$ 和$ ( ( ) )习惯使用$ ,所有shell的求值都是用整数完成。$ 可以接
22、受不同基数的数字 base#n n表示基数从2到36的任何基数。eg: 八进制的10加1,结果为9 echo $ 10#8+1 9运算符优先级级别运算符说明级别运算符说明13-,+正,负12!,逻辑非,按位取反或补码11*,/,%乘,除,取模10+,-加,减9按位左移,按位右移8=,7=,!=等于,不等于6&按位与5按位异或4|按位或3&逻辑与2|逻辑或1=,+=,-=,*=,/=,%=,=,=,&=赋值、运算且赋值较高运算级别的运算符优先于低级别的运算符进行求值运算。小结本地变量环境变量变量替换位置变量标准变量特殊变量影响变量的命令引号运算符表达式替换运算符优先级Shell 输入、输出控制e
23、choreadcat管道tee文件重定向echoecho显示文本或变量,或者把字符串输入到文件命令格式echo string-e 表示解析转义字符 -n 回车不换行,linux默认回车换行控制字符:c-不换行;t-跳格;n-换行举例echo “Whats your nname:c”read nameecho $LOGNAMEecho 举例示例:#!/bin/bash#echodecho e “This echos 3 new linesnnnn”echo “OK”echoecho “This echos 3 new linesnnnn”echo “The log files have all
24、been done” mylogfile.txtreadread从键盘或文件的某一行文本中读入信息,并将其赋给一个变量命令格式read 变量1 变量2 举例$read name1 name2tom jerry bobread 举例示例:#!/bin/bash#readnameecho n “First Name”read firstnameecho n “Last Name:”read lastnameecho e “Your First Name is : $firstname n”echo e “Your Last Name is : $lastname n”文件重定向标准输出、输入及错误
25、文件文件描述符输入文件标准输入0(缺省是键盘,也可以是文件或其他命令的输出)输出文件标准输出1(缺省是屏幕,也可以是文件)错误输出文件标准错误2(缺省是屏幕,也可以是文件) 在shell 中执行命令时,每个进程都和三个打开的文件相关联,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。文件重定向改变程序运行的输入来源和输出地点1. command filename把标准输出重定向到一个新文件中2. command filename把标准输出重定向到一个文件中(追加)3. command 1 filename把标准输出重定向到一个文件中4. comma
26、nd filename2 &1 把标准输出和标准错误一起重定向到一个文件中5. command2 filename把标准错误重定向到一个文件中6. command2 filename把标准输出重定向到一个文件中(追加)文件重定向改变程序运行的输入来源和输出地点7. Command filename 2 &1把标准输出和标准错误一起重定向到一个文件中(追加)8. Command filename 2command命令以filename文件作为标准输入,以filename 2文件作为标准输出9. Command delimiter 从标准输入中读入,直至遇到delimiter分界符10. Comm
27、and &m把标准输出重定向到文件描述符m中12. Command2 sort.out第3种情况cat file | sort sort.out第1种情况pwd path.out第2种情况 nullfile.txt创建一个文件重定向标准输入示例sort file将file文件中的数据作为输入,sort对其进行排序,然后将排序后的结果输出到屏幕上sort name.out第8种情况对排序后的内容输出到name.out文件中文件重定向举例标准输入示例:第9种情况rootjack shell# cat term.txt Hello,there I am using a $TERM !and my u
28、sername is $LOGNAMEbyeSITECHrootjack shell# cat term.txtHello,there I am using a vt100 !and my username is rootbye文件重定向举例重定向标准错误示例:rootjack shell# grep “trd” book.txtGrep: missiles:No such file or directoryrootjack shell# grep “trd” book.txt 2 /dev/null解释:表示把错误信息扔给/dev/null , /dev/null 不会保存错误信息,实质就是
29、丢失错误信息。如果sky.txt不存在,则错误信息存入到一个指定的文件中,如:ls -al sky.txt 2 err_message.txt文件重定向举例结合使用标准输出与标准错误示例:rootjack shell# cat account_new.txt Account_old.txt 1 accounts.out 2 accounts.errrootjack shell# cat accounts.out?rootjack shell# cat accounts.err?将2个文件的内容重定向到accounts.out中,如果某一个文件不存在,或出错,则将错误信息重定向到错误文件中acc
30、ounts.err文件重定向举例合并标准输出与标准错误示例:合并的时候shell是从左到右分析相应命令grep “standard” standard.txt grep.out 2&1-如果文件不存在,则把错误信息记录到grep.out中-如果文件存在, 也把正确的信息记录到grep.out中练习重定向标准输出ls l ls.outls l ls.out重定向标准输入sort /dev/null组合重定向find . name “*.log” find.log 2&1小 结echoreadcat管道重点掌握tee文件重定向重点掌握条件测试shell的内部命令里面有测试条件的语法test给if
31、while用 test condition或者 condition 条件测试文件状态测试逻辑操作符字符串测试数值测试expr文件状态测试格式:test 状态 或 状态举例test w student.txtecho $? -x student.txt echo $? -e file 文件存在 -d /etc/ 目录存在 -s file 文件大小大于0 -r file 文件可读 -b file 区块文件 -c file 字符文件 -f file 一般文件 -w file 文件可写 -x file 文件可执行 -k file 设定了限定位 -g file 设定了组位 -u file 设定了user
32、 id -p file 管线字符串测试命令格式 操作符 字符串 字符串 操作符 字符串 举例 -z $EDITOR $EDITOR = “vi” 操作符含义=相等!=不等-z空串-n非空串数值测试命令格式”数字1“ 操作符 ”数字2“ ”数字1“ 操作符 “数字2” 举例 ”100“ lt “110” echo $?$NUMBER=100 “$NUMBER ge 110 echo $? 900 -le 901 -a 100 -gt 99 echo $?操作符含义-eq等于-ne不等于-gt大于-lt小于-le小于等于-ge大于等于逻辑操作符逻辑操作符-a 逻辑与-o 逻辑或! 逻辑否举例 -x
33、 student -a -w student echo $?expr命令格式expr 参数 操作符 参数增量计数LOOP=0LOOP=expr $LOOP + 1数值测试模式匹配条件测试小结文件状态测试逻辑操作符字符串测试数值测试expr控制流结构流控制if then else:条件测试case:匹配模式、单词或值循环for 循环until循环while循环if then else语句语法格式:if 条件1then 命令1elif 条件2then 命令2else 命令3fi示例:if 10 -lt 11 then echo 10 is less than 11fiif then else语句#
34、!/bin/sh#if samples 2echo -n Enter your name:read NAMEif $NAME = | -z $NAME then echo sorry, you did not enter a nameelse echo you entered $NAMEfi示例:#!/bin/sh#ifcpif cp myfile.bak myfile; then echo “good copyelse echo “basename $0: error could not copy the files” &2fiif then else语句#!/bin/sh#ifelifec
35、ho -n Enter your name:read NAMEif $NAME = | -z $NAME ; then echo “You did not enter a name.“elif $NAME = “root ; echo “Hello root.“elif $NAME = “jack ; echo “Hello jack.“else echo you are not or jack,but hi, $NAME”fi示例:case语句语法格式:case 值 in 模式1)命令1;模式2)命令2;esac模式匹配:* 表示任意字符? 表示任意单个字符 abc a、b 或 c 三字符其
36、中之一 a-n 从a到n的任一字符 | 多重选择 case语句#!/bin/sh#case test 1echo -n enter a number between 1 and 3 pls.:read NUMcase NUM in 1) echo you entered 1 ; 2) echo you entered 2 ; 3) echo you entered 3 ;Y|y) echo “you entered $NUM” ; *) echo basename $0 exit 1 ;esac示例:for循环语法格式:for 变量名 in 列表do命令1命令2donefor循环#!/bin/
37、sh#for test 1for loop in 1 2 3 4 5do echo $loopdone示例:#!/bin/sh#for test 2for loop in “is this your pen?”do echo $loopdone列表换为:is this your pen?或cat myfilefor循环#!/bin/sh#for test 3BAK=.bakfor loop in lsdo echo backup $loop to $loop$BAK cp $loop $loop$BAKdone示例:for循环#!/bin/sh#for test 4counter=0for f
38、iles in *do counter=expr $counter + 1doneecho There are $counter files in pwd示例:for循环将.foo后缀的文件批量改名为.bar后缀。for f in *.foo; do base = basename $f .foo mv $f $base.bardone示例:将大写文件名改为小写文件名。for f in *; do mv $f echo $f | tr A-Z a-zdoneuntil循环语法until 条件命令1命令2done示例:#!/bin/sh#until test 2counter=0echo $co
39、unteruntil $counter -ge 100 do counter=expr $counter + 1 echo $counterdone条件发生在循环末尾,至少执行一次循环until循环示例:#!/bin/sh#until_monpart = “/backup” #得到磁盘使用的百分比LOOK_OUT=df |grep $part | awk print $5 | sed s/%/g echo $ LOOK_OUTuntil $ LOOK_OUT -gt “90 doecho “文件备份已经快满了!” | mail root LOOK_OUT=df |grep $part | aw
40、k print $5 | sed s/%/g sleep 3600donenohup ./文件名.sh后台运行程序休息3600秒while 循环语法格式:while 条件do命令1命令2donewhile循环#!/bin/sh#while test 1counter=0echo $counterwhile $counter -lt 100 do counter=expr $counter + 1 echo $counterdone示例1:while循环#!/bin/sh#while test 2while read LINEdo echo $LINEdone a.sh示例2:表示从a.sh文件
41、中一行行读出数据到LINE中,循环输出while循环yymm=200810no=10low=0con_db=dbaccopr/accoprdb152ACCDBtab_name=all_owedet_tmpsrc=dcustowesqlplus -s $con_db !drop table $tab_name;create table $tab_name (); while $no -lt 100 do if $no -lt 10 then sqlplus -s $con_db! insert into $tab_name select 字段,. from $src$yymm$low$no; c
42、ommit; elif $no -lt 100 then insert into $tab_name select contract_no,id_no,fee_code,detail_code,cust_id,payed_status, should_pay should ,favour_fee favour,payed_prepay from $src$yymm$no; fi no=expr $no + 1 doneexit!示例3while循环yymm=200810num=10low=0con_db=dbaccopr/accoprdb152ACCDBtab_name=all_owedet_
43、tmpsrc=dcustowesqlplus -s $con_db ! while $num -lt 100 do echo $num; insert into $tab_name select contract_no,id_no,fee_code,detail_code,cust_id,payed_status, should_pay should ,favour_fee favour,payed_prepay from $src$yymm$num; commit; num=expr $num + 1 doneexit!示例4:循环控制break跳出循环continue不会跳出循环,跳过本次
44、循环,进入下一次循环循环控制举例示例:#!/bin/sh#breakoutwhile :do echo n “Enter any number 15:”read ANScase $ANS in1|2|3|4|5)echo “您键入正确的数字.”;*)echo “错误的输入”break;esacdone:表示永远为真循环控制举例示例:#!/bin/sh#breakoutwhile :do echo n “Enter any number 15:”read ANScase $ANS in1|2|3|4|5)echo “您键入正确的数字.”;*)echo “错误的输入,是否继续(y/n)?”read
45、 IS_CONTINUEcase $IS_CONTINUE iny|yes|Y|YES)continue;*)break;esacesacdoneSHELL实例 设计一个Shell程序,在/userdata目录下建立50个目录,即user1user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。 考答案: 建立程序 如下:#!/bin/shi=1while i -le 50 doif -d /userdata ;thenmkdir -p /userdata/user$ichmod 754 /userdata/user$
46、iecho user$ilet i = i + 1 (或i=$($i1)elsemkdir /userdatamkdir -p /userdata/user$ichmod 754 /userdata/user$iecho user$ilet i = i + 1 (或i=$($i1)fidone练习编写一个菜单界面1:显示当前目录下所有文件2:显示当前目录下所有文件大小3:使用vi编辑器4:查看当前系统中登陆的用户q:退出菜单控制流结构小结流控制if then else:条件测试case:匹配模式、单词或值循环for 循环until循环while循环循环控制breakcontinueshell函
47、数函数定义参数传递函数文件检查载入和删除函数函数的返回函数定义情况一:函数名() 命令1 命令2 情况二:function 函数名() 命令1 命令2 函数定义#!/bin/sh#funcfunction hello() echo “你好,今天是:date”echo “=“helloecho “=“示例1 :函数定义#!/bin/shdisksum() echo ls -l | awk /d/ total+=$5 END print Total size is:totaldisksum示例2 :函数定义#!/bin/shdisksum() echo ls -l | awk /d/ total+=$5 END print Total size is:totaldisksum示例:参数传递#!/bin/sh#fun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园欺凌培训相关试题及答案
- 消防检测考试常见试题与答案
- 办保安证各类试题及完整答案
- 2025-2026学年廊坊市安次区数学四下期中统考试题含答案解析
- 北斗监控测试题及参考答案
- 会计招聘笔试题及参考答案
- 35MW碲化镉光伏发电玻璃示范项目可行性研究报告模板立项申批备案
- 2026年汽车经销商客户关系管理系统升级案例
- ISO 12003-12021 农林拖拉机.窄拖拉机上的防滚翻保护结构.第1部分前装式ROPS标准立项发展报告
- 2026年天津市公务员考试行测数量关系专项训练课件
- 2026年数字安徽有限责任公司所属企业安徽数安系统集成有限公司第1批次社会招聘考试参考题库及答案详解
- 2026年中小学教师(语文)副高级职称评审答辩题库及答案
- 学校管理与教师专业发展手册
- 2026秋新人教版英语五年级上册单元一Unit 1 Different friends测试卷-提高卷附答案(文档中已插入听力音频)
- 2026-2030中国白垩工业市场现状分析与竞争策略研究报告版
- 2026广西南宁市青秀区伶俐镇人民政府招聘2人(劳务派遣)笔试参考题库及答案详解
- 2026福建泉州交发集团(第一批)校园招聘89人笔试备考题库及答案详解
- 2026年新疆生产建设兵团事业单位考试真题及答案
- 2026年广东省中考语文试卷(含详细答案解析)
- 影像医学技术操作规程大全
- 2026年河南高考地理考试试卷及答案
评论
0/150
提交评论