鸟哥私房菜 第十三章 学习shell script

学习shell script

 

什么是shell script

        shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。

        在shell script编写中的注意事项:

                1.命令的执行是从上而下、从左而右地分析与执行的;

                2.命令的执行过程中,命令、参数间的多个空白都会被忽略掉;

                3.空白行也将被忽略掉,并且Tab键所得的空白同样视为空白键;

                4.如果读取到一个Enter符号(CR),就尝试开始执行该行(或该串)命令;

                5.至于如果一行的内容太多的话,则可以使用“\Enter”来拓展至下一行;

                6.“#”可作为批注。任何加咋在#后面的数据将全部被视为批注文字忽略掉。

 

        假设你写的这个程序文件名是/home/dmtsai/shell.sh,则执行该文件的方法如下:

                1.直接指令下达:shell.sh文件必须要具备可读与可执行的权限,然后:

                        绝对路径:使用/home/dmtsai/shell.sh来下达命令;

                        相对路径:假设工作目录在/home/dmtsai/,则使用./shell.sh来执行;

                        变量PATH功能:将shell.sh放在PATH指定的目录内,例如:~./bin/;

                2.以bash程序来执行:透过bash shell.shsh shell.sh来执行。

 

        养成编写shell script的良好习惯,在每个script的文件头处记录好:

                1.script的功能;

                2.script的版本信息;

                3.script的作者与联络方式;

                4.script的版权声明方式;

                5.scriptHistory(历史记录);

                6.script内较特殊的命令,使用绝对路径的方式来执行;

                7.script执行时需要的环境变量预先声明与设置。

 

善用判断式

        利用test命令的测试功能

                关于某个文件名的文件类型判断

                        test [-efdbcSpL] filename 

                                -e:该文件名是否存在;

                                -f:该文件名是否存在且为文件;

                                -d:该文件是否存在且为目录;

                关于文件的权限检测

                        test [-rwxugks] filename

                                -r:检测该文件名是否存在且具有可读权限;

                                -w检测该文件名是否存在且具有写”权限

               两文件之间的比较

                        test file1 [-nt,-ot,-ef] file2

                                -nt:判断文件1是否比文件2新;

                                -ot判断文件1是否比文件2旧;

                                -ef:判断文件1与文件2是否为同一文件。

                关于两个整数之间的判定

                        test n1 [-eq,-ne,-gt,-lt,-ge,-le] n2

                                -eq:两数值相等;

                                -ne:两数值不等;

                                -gtn1 > n2

                                -ltn1 < n2

                                -gen1 >= n2

                                -len1 <= n2

        利用判断符号[]

                使用中括号注意事项:

                        中括号的两端需要有空格符来进行分隔;

                        在中括号内的每个组件都需要有空格键来分隔;

                        在中括号内的变量,最好都以双引号括起来;

                        在中括号内的常量,最好都以单或双引号括起来;

       我们可以使用netstat -tuln来取得目前主机有启动的服务。

       每个埠口都有其特定的网络服务,几个常见的port与相关的网络服务的关系是:

              80WWW

              22SSH

              21FTP

              25Mail

              111RPC(远程过程调用)

              631CUPS(打印服务功能)


 

循环(loop

        循环主要分为不定循环(whileuntil)以及固定循环(for),配合dodone来达成所需任务!


 

shell script的追踪与调试

        我们可以用sh -x script.sh来进行程序的调试。                                   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值