shell程序设计注意事项
关于Linux 中的 shell
在linux系统中使用的主流shell是Bash,它是Bourne Again Shell 的缩写,Bash是由Bourne Shell发展而来的,但Bash与sh稍有不同,它还包含了csh和ksh的特色,但大多数脚本都可以不加修改地在Bash上运行. 1、shell脚本的执行我们用vim创建好一个shell程序后,是不能直接运行的,我们需要修改它的权限,利用chmod a x filename 即可把文件修改为可执行文件.当然我们也可以以脚本作为shell参数的执行方式来执行, 可利用命令 sh filename ,另外一种方式就是利用输入重定向的方式执行, sh < filename . 2、位置参数在shell中规定,位置参数最多不能超过9个,即$1~$9. 如果实际给定的命令行参数多于9个,就需要用shift命令移动位置参数.每执行一次shift命令,就把位置参数整体向左移一位,即原来的$1的值被移走,新的$1的值就是原来$2的值....当然shift不能将$0移走.也可以一次左移多位,shift n 就可实现一次左移n位. 3、shell中的引号双引号("")由它括起来的字符,除$ 、倒引号和反斜线()保留其特殊功能外,其余字符通常作为普通字符对待.还要特别注意的是引号一定是英文双引号,而不能是中文状态下的引号. 由单引号括起来的所有字符和字符串都作为普通字符出现,显示的时候都照原样显示,特殊字符也失去了原有的特殊意义. 倒引号括起来的字符串被shell解释为命令行,shell会执行该命令,并以它的标准输出结果取代整个倒引号部分. 4、if 语句if then else case 在使用时一定要与后面的判断条件,命令等留一个空格,否则就会出错.比如: 错误:if[ "$1" -lt 10 ] 拥有帝国一切,皆有可能。欢迎访问phome.net正确:if [ "$1" -lt 10 ] if语句要以fi结束,case语句要以esac结束. 5、测试语句test -f "$1" 等效于 [ -f "$1" ] 在使用时要注意以下三点: 如果在test语句中使用shell变量,为表示完整,避免造成歧义,最好用双引号将变量括起来. 在任何一个运算符、圆括号、方括号等操作符的前后至少需要留有一个空格. 如果需要在下一行继续测试表达式,应该在按下Enter键之前加上反斜线(). 6、case语句case string1 in strn) commands ;; esac 其中strn也称为正则表达式. 使用时应该注意以下三点: 每个正则表达式后面可有一条或多条命令,其一条命令以两个分号(;;)结束. 正则表达式中可以使用通配符. 如果一个正则表达式是由多个模式组成,那各个模式之间应该以竖线"|"隔开.这样就可以表示各个模式是“或”的关系.也就是说只要给定的字符串与其中一个模式相匹配,就会执行其后面的命令表. 7、算术表达式正确:expr 14 - 3 错误:expr14-3 ;expr 14-3 ;expr 14 -3 在运算符的前后都要留有空格,否则expr不对表达式进行计算,而直接输出他们,表示”乘“的运算符前应该加一个转义符"*",并非只是一个"*". 8、自定义函数函数定义后,在文件中调用此函数时,直接利用函数名,如test ,不必带圆括号,就好像使用一般普通命令一样.shell脚本与函数间的参数传递可利用位置参数和变量直接传递,变量的值可以由shell脚本传递给被调用的函数,而函数中所用的位置参数$1、$2等对应于函数调用语句中的实参. 拥有帝国一切,皆有可能。欢迎访问phome.net
本文出自 “lovecode” 博客,请务必保留此出处http://daaoao.blog.51cto.com/2329117/557165 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |