Shell编程之条件语句

1、条件判断

(1)命令

test命令:测试表达式是否成立,若成立返回0,否则返回其他值

格式:

test 条件表达式
[ 条件表达式 ]     #[ ]两边要有空格

(2)文件测试

格式:

test 选项 文件/目录路径   test 选项 $变量 
[ 选项 文件或目录 ]  [ 选项 $变量 ]
常用的操作符:
-e:测试目录或文件是否存在(Exist)。
-d:测试是否为目录(Directory)。
-f:测试是否为文件(File)。
-r:测试当前用户是否有权限读取(Read)。
-w:测试当前用户是否有权限写入(Write)。
-x:测试是否设置有可执行(Excute)权限。
-L:测试是否为软链接文件

(3)整数值比较

格式:

test 整数1 选项 整数2  test 变量1 选项 变量2
[ 整数1 选项 整数2 ]  [ 变量1 选项 变量2 ]
常用的操作符:
-eq:等于                    ==
-ne:不等于                    !=
-gt:大于                    \>
-lt:小于                    \<
-le:小于等于
-ge:大于等于
[[ 运算表达式 选项 参数]]
[[ 99+1 - eq 100]]:数学运算

(4)字符串测试

格式:

test "字符串1" == "字符串2"  [ "字符串1" == "字符串2" ]  [[ "字符串1" == "字符串2" ]]  判断字符串是否相同
test "字符串1" != "字符串2"  [ "字符串1" != "字符串2" ]  [[ "字符串1" != "字符串2" ]]  判断字符串是否不同
[ ["abc" =~ "a" ]]:判断abc里有没有a
test -z "字符串  test -z "$变量" [ -z "字符串"]:判断字符串是否为空
test -n "字符串" test -n "$变量" [-n "$变量"]:判断字符串是否有字符串

(5)逻辑测试

[ 表达式1 ] && [ 表达式2 ]  [ 表达式1 -a 表达式2 ]  [[ 表达式1 && 表达式2 ]]:且,要求前后表达式都成立
[ 表达式1 ] || [ 表达式2 ]  [ 表达式1 -o 表达式2 ]  [[ 表达式1 || 表达式2 ]]:或,只需前后表达式成立一个即可
[ 表达式1 ] || 命令1:如果表达式1条件成立不会执行或运算符后面的命令
[ 表达式1 ] && 命令1 || 命令2:如果表达式1条件成立则执行命令1,如果表达式1条件不成立则命令2
[ ! 表达式1 ]:取反,如果表达式1条件成立则最终结果为条件不成立

补充:判断进程是否运行

判断进程是否运行的方法
netstat -lntup | grep :端口/进程名
ss -lntup | grep :端口/进程名
lsof -i :端口
ps -elf | grep -v "grep" | grep -v"$$"
pidof 进程名 | wc -w
killall -0 进程名:判断进程是否存在

2、if语句

(1)单分支结构

if [ 条件表达式 ]      if test 条件表达式      if 命令行 &> /dev/null
then
  命令序列
  ...
fi  

if [ 条件表达式 ];then
  命令序列
  ...
fi 

等效于
[ 条件表达式 ] && 命令

awk -F. 'print $1':以.为分隔符,取第一个参数

(2)多分支结构

if [ 条件表达式 ]
then
  命令序列
else
  命令序列
fi 

等效于
[ 条件表达式 ] && 命令1 || 命令2

(3)多分支结构

if [ 条件表达式 ];then
  命令序列
elif [ 条件表达式 ];then
  命令序列
elif [ 条件表达式 ];then
  命令序列
....
else
  命令序列
fi 

3、case多分支语句

case $变量 in
模式1)
  命令序列
  ;;
模式2)
  命令序列
  ;;
....
*)
  命令序列
esac

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 14:24:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 14:24:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 14:24:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 14:24:03       20 阅读

热门阅读

  1. QT设计模式:模板模式

    2024-05-10 14:24:03       9 阅读
  2. 代码随想录算法训练营第四十七天

    2024-05-10 14:24:03       10 阅读
  3. linux自用命令

    2024-05-10 14:24:03       7 阅读
  4. golang系统内置函数整理

    2024-05-10 14:24:03       8 阅读
  5. 学习Python第6天:函数与模块

    2024-05-10 14:24:03       10 阅读
  6. Linux 系统启动时设置一个全局环境变量

    2024-05-10 14:24:03       11 阅读
  7. STM32中usart使用DMA接受数据

    2024-05-10 14:24:03       11 阅读