Shell脚本常识--(条件判断)

本文详细介绍了Shell脚本中的if条件语句与case多重条件测试语句的使用方法,包括基本格式、嵌套使用及实际案例,帮助读者掌握Shell脚本编程的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、if 条件语句  
格式: 
if 条件表达式 
then #当条件为真时执行以下语句 
命令列表 
else #为假时执行以下语句 
命令列表 
fi 

if 语句也可以嵌套使用 

if 条件表达式1 
then 
if 条件表达式2 
then 
命令列表 
else 
if 条件表达式3 
then 
命令列表 
else 
命令列表 
fi 
fi 
else 
命令列表 
fi 

你可以进行多层嵌套 一个if语句一定要跟一个fi 表示该层条件结束  否则会造成语法错误 
结合前面讲的 举例如下: 
这里先讲一个条件语句中用到的命令test 表示测试test后面的条件是否为真 

if test -f "$1" 
then 
lpr $1 
else 
if test -d "$1" 
then 
cd $1 
lpr $1 
else 
echo "$1不是文件或目录" 
fi 
fi 

以上的例子还可以改成如下所示 

if test -f "$1" 
then 
lpr $1 
elif test -d "$1" #elif 同else if 
then 
(cd $1;lpr $1) 
else 
echo "$1不是文件或目录" 
fi?????? 

以上的例子不知您是否看懂是什么意思吗? 
假如我们现在将这个例子保存为prfile 
chmod +x prfile 
执行刚才的程序 
./prfile aaa 

这个例子是检查你的输入的参数是否是一个文件 如果是就打印 如果是一个目录 先转目录再打印 如果即不是文件也不是目录给出提示 

二、多重条件测试语句case 
格式: 
case 字串 in 
模式) 命令列表;; 
模式) 命令列表;; 
.... 
esac 

多重条件语句是以case 开始以esac结束 中间可以有多个条件列表 功能是测试字串和和里面的模式有没有匹配的,有就执行里面的命令列表 模式也可以是*号 表示任意字串,每个模式里面的最后要心;;双引号结束,否则会发生语法错误。 

现举例如下: 

case $1 in 
*.c) 
cc $1 
;; 
*.txt) 
lpr $1 
;; 
*) 
echo "未知的类型" 
esac 

假如将以上内容保存在文件abc中 

chmod +x abc 
执行 ./abc a.c   将会对文件a.c进行编译 
执行 ./abc readme.txt 将会把文件通过打印机 
假如我将以上内容改一下,你是否会知道它的执行结果? 

case $1 in 
*) 
cc $1 
;; 
*.txt) 
lpr $1 
;; 
*.c) 
echo "未知的类型" 
esac 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值