Linux基础入门及系统管理01-bash脚本编程之四文件测试及特殊变量19


一、bash中常用的条件测试有三种

   1、整数测试:-gt -le -ne -eq -ge -lt;

   2、文件测试:

       -e FILE:测试文件是否存在,如:[ -e /etc/inittab ]

       -f FILE:测试文件是否为普通文件;

       -d FILE:测试指定路径是否为目录;

       -r FILE:测试当前用户对指定文件是否有读取权限;

       -w FILE:测试当前用户对指定文件是否有可写权限;

       -x FILE:测试当前用户对指定文件是否有可执行权限,如:[ -x /etc/rc.d/rc.sysinit ];

      如:测试一个指定的文件是否存在;

           # nano filetest.sh

           #!/bin/bash

           #

           FILENAME=/etc/inittab

           if [ -e $FILENAME ];then

           echo "OK."

           else

           echo "Not the such file."

           fi

           # bash filetest.sh

           OK.

二、测试脚本是否有语法错误

   1、bash -n 脚本:脚本测试;

   2、bash -x 脚本:单步执行脚本测试;

三、自定义脚本退出状态码

   1、exit:退出脚本;

   2、exit num:指定退出码,一般不指定0,因为执行命令正确才为0;

   3、如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码;

四、bash变量类型

   1、本地变量(局部变量):作用域为当前shell进程;

   2、环境变量:作用域为当前shell进程及其子shell进程;

   3、位置变量:

       a)$1,$2,...

           如:./filetest.sh /etc/fstab /etc/inittab

         $1:对应位置为./filetest.sh;

         $2:对应位置为/etc/fstab;

       b)shift:轮换参数(轮替);

       c)shift n:轮替多个参数;

           如:#nano shift.sh

                   #!/bin/bash

                   #

                   echo $1

                   shift

                   echo $1

                   shift

                   echo $1

               #bash ./shift.sh 1 2 3 4

               1

               2

               3

   4、特殊变量

       a)$?:上一条命令的退出状态码;

       b)$#:参数的个数;

       c)$*:参数列表;

       d)$@:参数列表;

练习1,写一个脚本:

   能接受一个参数(文件路径)

   判断:此参数如果是一个存在的文件,就显示“OK”;否则就显示“No such file.”

参考答案:# nano filetest3.sh

               #!/bin/bash

               #

               if [ $# -lt 1 ];then

               echo "Usage:./filetest3.sh ARG1 [ARG2 ...] "

               exit 7

               fi

               if [ -e $! ];then

               echo "OK."

               else

               echo "No such file."

               fi

         # chmod +x ./filetest3.sh

         # ./filetest3.sh /etc/fstab

         OK.

         # ./filetest3.sh /etc/fstavv

         No such file.

练习2,写一个脚本:

   给脚本传递两个参数(整数);显示此两者之和,之乘积;

参考答案:#nano cal.sh

               #!/bin/bash

               #

               if [ $# -lt 2];then

               echo "Least two ARG."

               echo "The sum is:$[$1+$2]."

               echo "The prod is:$[$1*$2]."

         #bash cal.sh 6 9

         The sum is:15.

         The prod is:54. 。


你可能感兴趣的:(特殊变量,位置变量,文件测试,测试脚本错误,自定义退出状态码)