1、使用if-else语句命令
#if-else是最基本的结构化语句命令,if-else基本语法格式如下
if [command]
then
[commands]
fi
这是结构化命令中最基本语法的基本形式,当然,它还有另一种语法形式:
if [command];then
[commands]
fi
上述讲述了if-else的基本语法,那么具体该如何使用它呢?
这里举个简单的例子来解释此概念:
首先,新建shell脚本,内容如下:
#!/bin/bash #shell脚本的基本语法形式
#Testing the if statement #测试if语句
if pwd #如果执行“pwd”命令,返回的状态码为0(执行成功)
else echo “It a work!” #那么使用echo命令输出“It a work”语句提示执行成功
fi ; #语法基本格式fi结尾
以上就是test1的语法简单书写形式,在我们给予此文件x(执行权限)后:chmod u+x test1,我们便可使用
./test1来执行此脚本,会得到如下结果
$./test1
/home/test
It a work!
shell执行了if行中的pwd命令,由于退出状态码为0(执行成功),所以会继续执行then部分的echo语句,并输出对应结果
以上是基本的if-then语句,接下来继续深入if-then-else语句
在if-else语句中,无论执行成功与否,我们都只有一种选择,而如果执行if后的语句返回的是非0状态码,我们可以继续使用else执行下一条语句,if-then-else语法格式如下:
if [command]
then
[commands]
else
[commands]
这个语法格式也非常简单,因为在结构化命令中if-then-else语句是基础语句,接下来举例语句的正确用法,以便我们更好的了解结构化命令
$vim test2
#!/bin/bash
#Testing the else section
testuser=NoSuchuser
if grep $testuser /etc/passwd
then
echo “The bash files for user $testuser are:”
ls -a /home$testuser/ .b*
echo
else
echo “The user $testuser does not exots on this system”
echo
fi
这样我们的else脚本也完成了,接下来给到x权限尝试执行
$chmod u+x test2
$./test2
The user NoSuchUesr does not exit on this system.
这样是不是十分友好呢?跟if-then语句一样,then部分可以包含多条语句,else也是一样支持多条命令。
2 test命令以及复合条件测试
文件比较:今天带大家来看shell中最为强大、也是用的最多的比较形式命令,它允许你测试Linux文件系统上文件和目录的状态,如下
-d file #检查文件file是否存在并为一个目录
-e file #检查文件file是否存在
-f file #检查文件file是否存在并为一个文件
-r file #检查文件file是否存在并可读
-w file #检查文件是否存在并可写
-s file #检查文件是否存在并非空
-x file #检查文件是否存在并可执行
-O file #检查文件是否存在并为当前用户属有
-G file #检查文件是否存在并且默认组与当前用户相同
file1 -nt file2 #检查文件file1是否比file2新
file1 -ot file2 #检查文件file1是否比file2旧
以上就是shell编程中最为常用来测试文件属性以及文件比较的命令语法了,那么它具体该如何使用?接下来让我们一起看看:
ex:检查文件
-e用于比较可用于文件和目录,要确定指定对象为文件,必须使用-f
例如下图代码,使用了-f与布尔运算的AND形式,先检查test3是否是一个文件,再通过-x检查这个文件是否可执行,检查成功通过则输出“This is a file and it’s can execute”
输出结果如上