UNIX和LINUX-SHELL.ppt_第1页
UNIX和LINUX-SHELL.ppt_第2页
UNIX和LINUX-SHELL.ppt_第3页
UNIX和LINUX-SHELL.ppt_第4页
UNIX和LINUX-SHELL.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、UNIIX和LINUX的SHELL使用简介,常用shell介绍: Bourne shell : sh 最初使用的shell 并且在每种UNIX 上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面作得不如其他几种 shell C shell : csh C shell的语法和 C语言的很相似;更多的考虑了用户界面的友好性 Korn shell: ksh 商业软件,集合了C shell 和 Bourne shell 的优点并且和 Bourne shell 完全兼容 tcsh (free) csh 的扩展,LINUX较常用 Bourne Again shel

2、l: bash (GNU) 是Linux 的标准 shell,完全免费 相容於 Bourne shell (sh) 包含有 C shell 以及 Korn shell 中最好的功能 其他 一般是以上的修改扩展后形成,一 shell script 语法 1 流程 注释 操作符“#”为注释. if 操作符 if 条件表达式 then 命令序列 fi 或 if 条件表达式 then 命令序列 else 命令序列 fi,数值操作符 = 等于 -n 不等于 -gt 大于 -lt 小于 -le 小于等于 exit 命令 用于结束SHELL脚本.可以带一个返回值 expr 命令 以数值和算术运算符作为参数,

3、计算结果,将其返回标准输出. $ expr 4 + 5 9 合法算术运算符有+、-、*、/和%.在*和/之前必须冠以反斜 线,已防被SHELL先行解释.,for 操作符 for $环境变量 in 字符串表 do 语句序列 done while 操作符 while 条件表达式 do 语句序列 done until 操作符(注:测试发生在循环末尾,因此循环至少执行一次) until 条件表达式 do 语句序列 done break及continue 用于for, while, until 等流程控制,case 操作符 case $环境变量 in 常量1) 语句序列1 ; 常量2) 语句序列2 ;

4、常量n) 语句系列n ; esac,. 测试文件状态 test condition 或 c o n d i t i o n - d 目录 - s 文件长度大于0、非空 - f 正规文件 - w 可写 test -w filename.txt; echo 命令分隔号 单引号(不具变数置换的功能) 双引号(具置换的功能) 3 函数 SHELL函数 funcname () 命令序列 ,调用时 funcname arg1 arg2 函数返回: 1 正常执行到函数末尾,然后返回; if $? =0 then ok else failure fi 2 使用return返回; 0- success; oth

5、er- failure; 创建函数文件并载入shell: . filename 检查: set 调用: 类似 卸载: unset funcName,二 例子 1 例1 number=0 while (test $number -lt 10) do echo $number/c number=expr $number + 1 done 结果如下: 0123456789 例2 WORK_DIR=/data2/chenxd/accounting10,modifilename() cd $WORK_DIR/data/$1 #absolute path for f in send* do if -f $

6、f then mv $f $2$f fi done for bankid in 1 4 do case $bankid in 1) modifilename $bankid GS ; 4) modifilename $bankid JT ; esac done,2 调试 最好方式是亲自查阅脚本,使用set命令并加大量的echo语句 测试函数时,首先将其作为代码测试,当结果满意时,再将其转换为函数 set命令简介: set -n 读命令但并不执行. set -v 显示读取的所有行. set -x 显示所有命令及其参数. 若将s e t选项关闭,只需用+替代- 可以在脚本开始时将s e t选项打开

7、,然后在结束时关闭它 或在认为有问题的特殊语句段前后打开及关闭它,三 执行SHELL 执行方式: 1. 直接下命令 这个方式和在命令列中直接下命令的效果一样,需要: chmod u+x filename 只有自己可以执行,其它人不能执行 chmod ug+x filename 只有自己以及同一群可以执行,其它人不能执行 chmod +x filename 所有人都可以执行 2. 使用sh命令 sh command 不一定要设成可执行 3. 使用.命令 . command 不像sh一般会产生新的process,相反地,它会在原有的process 下完成工作,4. 使用exec命令 exec co

8、mmand 此时这个Script将会被所执行的命令所取代。当这个命令执行完毕,这个Script也会随之结束 5. 使用命令替换 如果想要使某个命令的输出成为另一个命令的参数时,就一定要使用这个方法 将命令列於两个 号之间,而Shell 会以这个命令执行後的输出结果代替这个命令以及两个 符号。 exap1: str=Current directory is pwd echo $str 结果如下: Current directory is /users/cc/mgtsai exap2: number=expr $number + 1,6 cron自动运行 脚本含义: /var/spool/cron

9、/crontabs/目录放脚本文件, 格式:分 时 日 月 星期 要运行的命令 使用1 - 5来表示1到5,使用逗号,表示并集合,用星号*来表示连续的时间段 如:45 4 1,10,22 * * /apps/bin/backup.sh 表示每月1、1 0、2 2日的4 : 4 5运行/apps/bin/backup.sh 命令的一般形式: Crontab -u user -e -l -r -u 用户名。 -e 编辑c r o n t a b文件。 -l 列出c r o n t a b文件中的内容。 -r 删除c r o n t a b文件。 如果使用自己的名字登录,可不用使用- u选项,创建一

10、个新的crontab文件: 编辑$HOME目录下的.profile文件,在其中加入这样一行: EDITOR=vi; export EDITOR crontab cronFileName /etc/cron.d/重启(rm FIFO,然后cron) 日志记录/var/cron/log文件,7 at 格式:at -f script -m -l -r time date time 格式可以是H,HH, HHMM,HH:MM或H:M, 还可以使用a.m.或p.m. date 格式可以是月份数或日期数,而且a t命令能够识别 诸如today,tomorrow 提交若干行的命令,可以在a t命令后面跟上日

11、期/时间并回车, 最后用ctrl+d结束 8 nohup command 附例2: .profile 略; makefile 略(隐含规则,模式规则) 附例3: 脚本above.awk; #!/usr/bin/nawk -f #本脚本将CNC明细帐转换为明细帐临时表的格式。 BEGIN,FS = |; OFS = |; validRecord = 0; invalidRecord = 0; #print Begin deal CNC detail bill.; isOk = 1; if ($2 ! /0-9A-Za-z/) isOk = 0; if (length($3) = 0) isOk

12、= 0; if ($4 ! /0-9/) isOk = 0; #比总帐多主计费号字段 if ($5 ! /0-9A-Za-z/) isOk = 0; if (length($7) = 0) isOk = 0; if ($9 ! /200/) isOk = 0; if ($7 = 银行托收) payType = 6 else payType = 1; if ($10 = 0.00) c10 = 100 * ($10 + 0.004); else,c10 = 100 * ($10 - 0.004); if (isOk = 1) validRecord+; printf 0|0|%s|%s|%s|%

13、s|%d|%s|%s| %d|%d|%d|%d|%d|%d|%d|%d|%d|n, $2, $4, $5, $7, payType, c10; else invalidRecord+; END printf Deal end.ValidRecord=%dInvalidRecord=%dn, validRecord, invalidRecord; 调用格式: above.awk $1 format.txt,附相关命令列表 echo, printf,read : 回显和读到变量 tput 屏幕输出控制 cat 显示文件内容,创建文件,显示控制字符 tee 屏幕输出的同时,另一个副本拷贝到相应的文件中 test 测试 test -d $(OBJPATH) | mkdir $(OBJPATH) $d AgencyBill.1 del 1-3 and last line sed -n /.*ing/p generateAgencyBill.sh 匹配后跟任意字母的0次或多次重复,并以i n g结尾,下面是一些命令集例子( 表示空格, 表示t a b键) s / . $ / / g 删除以句点结尾行 -e /abcd/d 删除包含a b c d的行 s / * / / g 删除一个以上空格,用一个空格代替 s / *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论