shell编程之文件测试及if多分支语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之文件测试及if多分支语句相关的知识,希望对你有一定的参考价值。
文件测试用法:
-e :判断文件是否存在,如果不存在返回的状态为假
-f :判断文件是否为普通文件
-d :判断是否为目录
-x :判断当前用户是否可执行此文件
-w :判断当前用户是否可写此文件
-r :判断当前用户是否可读此文件
如 [ -e /etc/inittab ]
if多分支语句
if 条件一 ;then
执行语句
elif 条件二 ;then
执行语句
。。。
else
执行语句
fi
写一个脚本,给定一个文件:如果是一个普通文件,就打印this is file。;如果是一个目录就打印this is directory。否则,此为无法识别之文件;脚本内容如下:
#!/bin/bash
FILE=$1 #$1是位置变量,表示接受脚本后面接的第一个参数,$2,$3 ...表示接第二,三...个参数
#如果后面接的不止一个参数,只取第一个参数。
# $# 是特殊变量,获取参数的个数($* 列出所有参数),如过参数小于一个,就exit 1 退出,退出时带上退出状态码1,
# 如果不加上退出状态码,它默认的退出状态码就会以上一条命令的执行状态为准。
NUM=$#
if [ $NUM -lt 1 ];then
echo "脚本后面需接一个参数,如:judge.sh /etc/passwd ."
exit 1
fi
if [ -f $FILE ];then
echo "this is file."
elif [ -d $FILE ];then
echo "this is directory."
else
echo "无法识别此文件."
fi
另外需要注意的是,如果参数比较少只有一两个可以用$1,$2...,那如果有几十上百个呢?我们不可能用一大堆$1...吧,此时我们要用到 shift语句,如shift 1 表示使用完上一个参数后,就将第一个参数丢掉,把第二个参数当作第一个参数,以此类推。如下脚本:
#!/bin/bash
echo $1
shift 1
echo $1
shift 1
echo $1
shift 1
echo $1
执行结果:
[[email protected] ~]# sh shift.sh 1 2 3 4
1
2
3
4
另外如果要调试脚本,可以使用 bash -x xxx.sh 可以打印出脚本的执行过程,方便找出错误。
以上是关于shell编程之文件测试及if多分支语句的主要内容,如果未能解决你的问题,请参考以下文章