linux编程 第 2 讲.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《linux编程 第 2 讲.pdf》由会员分享,可在线阅读,更多相关《linux编程 第 2 讲.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ShellShell程序设计程序设计ShellShell的作用的作用操作系统与用户进行交互操作的界面操作系统与用户进行交互操作的界面提供脚本语言编程环境提供脚本语言编程环境,方便用户自动批量处理大量的工作任方便用户自动批量处理大量的工作任务务用户用户用户用户命令命令命令命令结果结果结果结果操作系统操作系统操作系统操作系统ShellShellShellShell的产生与发展的产生与发展支持支持Bourne shellBourne shell、C shellC shell和和KornKorn shellshell 标准标准shellshell为为bashbash(GNU BourneGNU Bou
2、rne-Again ShellAgain Shell)Bourne shellBourne shell向下兼容向下兼容作业控制作业控制(job controljob control)别名功能别名功能(aliasesaliases)命令历史命令历史(command historycommand history)命令行编辑功能命令行编辑功能自定义功能键自定义功能键提供更丰富的变量类型提供更丰富的变量类型、命令与控制结构命令与控制结构Linux ShellLinux Shell的功能的功能BshBshKshKshBashBashCshCshBsh在在20世纪世纪70年代中期诞生于新泽年代中期诞生于新
3、泽西的西的AT&T贝尔实验室贝尔实验室,具有较强的脚具有较强的脚本编程功能本编程功能Csh在在20世纪世纪80年代早期诞生于加利福年代早期诞生于加利福尼亚大学尼亚大学,使用使用C语言的语法语言的语法,用户命用户命令交互更加方便令交互更加方便Ksh结合了结合了Bsh和和Csh两者的功能优两者的功能优势势,兼有兼有Bsh的语法和的语法和Csh的交互特性的交互特性Bash是是Bsh的升级替代品的升级替代品,吸收了吸收了Ksh中的诸多优秀特性中的诸多优秀特性,Bash是开源软件是开源软件ShellShell的发展与分类的发展与分类#!/bin/bash#!/bin/bash#Here is comme
4、nts#Here is commentsfor file in*;dofor file in*;doifif grepgrep POSIX$file;thenPOSIX$file;thenecho$fileecho$filefifidonedoneexit 0exit 0脚本文件的格式脚本文件的格式方法方法1:1:shsh script_filescript_file方法方法2:2:chmodchmod+x+x script_filescript_file././script_filescript_file方法方法3:3:sourcesource script_filescript_file,
5、or,or.script_filescript_file执行脚本文件执行脚本文件本地变量本地变量环境变量环境变量位置参数变量位置参数变量预定义变量预定义变量变量的类型变量的类型设置变量设置变量:引用变量引用变量:清除变量清除变量:查看变量查看变量:变量值置换变量值置换变量名变量名变量值变量值变量名变量名变量值变量值变量名变量名变量值变量值变量变量=$参数变量参数变量:-word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:-wordword$变量名变量名$变量名变量名变量名变量名unset 变量名变量名unset unset 变量名变量名变量名变量名setsetset变量变量=$参
6、数变量参数变量:=word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:=word:=word变量变量=$参数变量参数变量:?word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:?word:?word变量变量=$参数变量参数变量:+word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:+word:+word本地变量本地变量 用 FinePrint 打印-可在 订购输入输入/输出输出从键盘或文件中读入信息从键盘或文件中读入信息readread 变量变量显示文本行或变量显示文本行或变量echoecho 字符串字符串功能功能命令命令echoecho命令命令关闭反
7、斜线控制字符的转换关闭反斜线控制字符的转换(默认默认)-E E启用反斜线控制字符的转换启用反斜线控制字符的转换-e e不要在最后自动换行不要在最后自动换行-n n功能功能选项选项Example:Example:$echo$echo -e ae a tbtb tctc ndnd tete tftfa b ca b cd e fd e fechoecho转义符转义符表格跳位表格跳位鍵鍵 t t回车键回车键 r rESCAPEESCAPE,逃离键逃离键 E E取消行末的行换符号取消行末的行换符号 c c反斜线本身反斜线本身 換換行字符行字符 n n换页字符换页字符 f f也就是向左也就是向左刪刪除除
8、 b b从系统喇叭发送出声音从系统喇叭发送出声音 a a功能功能转义符转义符语法语法$(command)$(command)commandcommand举例举例#!/bin/#!/bin/shshechoecho “The current directory is$PWDThe current directory is$PWD”echoecho “The current directory is$(The current directory is$(pwdpwd)”exit 0exit 0捕获命令输出捕获命令输出设置环境变量设置环境变量:引用环境变量引用环境变量:常用环境变量常用环境变量HOM
9、EHOMEPATHPATHTERMTERMUIDUIDPWDPWDPS1PS1$变量名变量名$变量名变量名变量名变量名exportexport 变量名变量名变量值变量值exportexport exportexport 变量名变量名变量值变量值变量名变量名变量值变量值环境变量环境变量环境变量HOMEHOME当前用户的主目录当前用户的主目录PATHPATH命令搜索路径命令搜索路径LOGNAMELOGNAME用户登录名用户登录名PS1PS1第一命令提示符第一命令提示符,是是#或或$PS2PS2第二命令提示符第二命令提示符,默认是默认是 PWDPWD用户的当前目录用户的当前目录UIDUID当前用户标
10、识符当前用户标识符TERMTERM终端的类型终端的类型SHELLSHELL 用户的用户的ShellShell类型及路径类型及路径HISFILEHISFILE存储历史命令的文件存储历史命令的文件环境变量由资源文件预先定义环境变量由资源文件预先定义bash shellbash shell全局性系统环境变量的资源文件全局性系统环境变量的资源文件/etc/etc/rcrc/etc/etc/bashrcbashrc/etc/profile/etc/profile全局性系统环境变量全局性系统环境变量用户定制的系统环境变量用户定制的系统环境变量/./.bashrcbashrc/./.bash_profile
11、bash_profile/etc/profile/etc/profile、/etc/etc/profile.dprofile.d/*/*用户用户1 1/./.bash_profilbash_profile e/./.bashrcbashrc用户用户2 2/./.bash_profilbash_profile e/./.bashrcbashrc用户用户3 3/./.bash_profilbash_profile e/./.bashrcbashrc用户定制的系统环境变量用户定制的系统环境变量 用 FinePrint 打印-可在 订购由由ShellShell在程序运行时设置在程序运行时设置共共101
12、0个变量个变量,从程序名开始依次为从程序名开始依次为0 09 9shiftshift命令递归访问参数命令递归访问参数$0$1$2$3 位置参数变量位置参数变量当前执行的进程名当前执行的进程名$0$0后台运行的最后一个进程号后台运行的最后一个进程号$!$!当前进程的进程号当前进程的进程号$命令执行后返回的状态命令执行后返回的状态,返回返回0 0表示成功执行表示成功执行,其其它值则表明执行错误它值则表明执行错误$?$?以一个单字符串显示传递到脚本的所有参数内容以一个单字符串显示传递到脚本的所有参数内容$*$*传递到脚本的参数的数量传递到脚本的参数的数量$#$#值意义值意义值意义值意义变量名变量名变
13、量名变量名预定义变量预定义变量自定义变量的设置自定义变量的设置$DAY=$DAY=sundaysunday自定义变量的查看与引用自定义变量的查看与引用$echo$DAY$echo$DAY 自定义变量的输出自定义变量的输出$export DAY$export DAY自定义变量的清除自定义变量的清除$unset DAY$unset DAY 用户自定义变量用户自定义变量ShellShell 控制语句控制语句内容提要内容提要条件语句条件语句分之语句分之语句循环语句循环语句函数函数命令表命令表使用使用testtest命令命令语法语法:使用括号使用括号 语法语法:条件表达式的值为真返回零条件表达式的值为真
14、返回零,为假时返回非零值为假时返回非零值testtest 条件表达式条件表达式testtest testtest 条件表达式条件表达式条件表达式条件表达式 条件表达式条件表达式 条件表达式条件表达式条件表达式条件表达式 条件测试条件测试文件状态测试文件状态测试可执行可执行-x x符号连接符号连接-L L可写可写-w w常规文件常规文件-f f文件有文件有suidsuid位位设置设置-u u文件长度大于文件长度大于0 0,非非空空-s s可读可读-r r目录目录-d d示例示例:-s s haison.chaison.c 0 0表示成功表示成功,其他其他为失败为失败,下同下同。条件测试篇条件测试
15、篇逻辑否逻辑否!逻辑或逻辑或(or)(or)-o o逻辑与逻辑与(and)(and)-a a示例示例:-r r haison.chaison.ca a w w hai.chai.c 逻辑操作符逻辑操作符 用 FinePrint 打印-可在 订购字符串测试字符串测试非空串非空串-n n两个字符串不相两个字符串不相等等!=空串空串-z z两个字符串相等两个字符串相等=示例示例:-z$SHELL z$SHELL 条件测试篇条件测试篇数值测试数值测试第一个数小于等于第二第一个数小于等于第二个数个数-lele数值不相等数值不相等(not equal(not equal to)to)-nene第一个数大于
16、等于第二第一个数大于等于第二个数个数-gege第一个数大于第二个数第一个数大于第二个数(greater than)(greater than)-gtgt第一个数小于第二个数第一个数小于第二个数(less than)(less than)-ltlt数值相等数值相等(equal to)(equal to)-eqeq示例示例:“1010”-eqeq“1212”条件测试篇条件测试篇if then elseif then else语句语句语法语法if if 条件语句条件语句1 1 thenthen命令命令elifelif 条件语句条件语句2 2 thenthen命令命令elseelse命令命令fifiI
17、fIf 语句语句example1example1#!/bin/bash#!/bin/bashifif grepgrep UNIXUNIX myfilemyfile/dev/null/dev/nullthenthen echo UNIX occurs inecho UNIX occurs in myfilemyfileelseelseecho No!echo No!echo UNIX does not occur inecho UNIX does not occur in myfilemyfilefifiexample2example2#!/bin/#!/bin/shsh#ifTestifTes
18、t#to show the method of if#to show the method of if echoecho -e Enter the first integer:e Enter the first integer:ccread FIRSTread FIRSTechoecho -n Enter the second integer:n Enter the second integer:read SECONDread SECONDif$FIRSTif$FIRST -gtgt$SECOND$SECOND thenthen echo$FIRST is greater than$SECON
19、Decho$FIRST is greater than$SECONDelifelif$FIRST$FIRST -ltlt$SECOND$SECOND thenthen echo$FIRST is less than$SECONDecho$FIRST is less than$SECOND elseelseecho$FIRST is equal to$SECONDecho$FIRST is equal to$SECOND fificasecase语句语句语法语法case 值值 in模式模式1)命令命令1;模式模式2)命令命令2;模式模式3)命令命令3;esaccase case 值值值值 ini
20、n模式模式模式模式1)1)命令命令命令命令1;1;模式模式模式模式2)2)命令命令命令命令2;2;模式模式模式模式3)3)命令命令命令命令3;3;esacesacCaseCase 语句语句#!/bin/#!/bin/shshechoecho “Please answer yes or no.Please answer yes or no.”read answerread answercasecase “$answer$answer”ininyes|y|Yes|YES)yes|y|Yes|YES)echoecho “Good morning!Good morning!”;no|n|No|NO)n
21、o|n|No|NO)echoecho “Good afternoon!Good afternoon!”;*)echo*)echo “Sorry,answer notSorry,answer not recognized.recognized.”;esacesacexit 0exit 0Example3Example3forfor循环循环语法语法forfor 变量名变量名 inin 列表列表dodo命令命令donedoneforfor forfor 变量名变量名变量名变量名 inin inin 列表列表列表列表dodododo命令命令命令命令donedonedonedone语义语义:每次处理依次
22、列表内信息每次处理依次列表内信息,直至循环耗尽直至循环耗尽forfor 语句语句 用 FinePrint 打印-可在 订购example4example4#!/bin/#!/bin/shshfor file in$(for file in$(lsls f*.f*.shsh);do);dolprlpr$file$filedonedoneexit 0exit 0example5example5#!/bin/bash#!/bin/bashcount=0count=0for i in*for i in*dodoif testif test x$ix$i thenthencount=count=expr
23、expr$count+1$count+1fifidonedoneecho Total of$count files executableecho Total of$count files executableuntiluntil循环循环语法语法untiluntil 条件条件dodo命令命令donedoneuntiluntil untiluntil 条件条件条件条件dodododo命令命令命令命令donedonedonedone语义语义:until:until循环直至条件为真循环直至条件为真untiluntil语句语句whilewhile循环循环语法语法whilewhile 条件条件dodo命令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux编程 linux 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内