Shell 脚本的详细解读 (二)

it2023-05-18  75

Shell中的运算符

# 采用括号的方式(更容易理解) (1) “$((运算式))”或“$[运算式]” # 关键字操作 (2) expr + , - , \*, /, % 加,减,乘,除,取余

 PS:expr运算符间要有空格

案例实操 

# 1. 计算 1+3 A=`expr 1 + 3` echo 'A的值为:$A:1+3='"$A" # 2.计算 98-60 B=`expr 98 - 60` echo 'B的值为:$B:98-60='"$B" # 3.计算(2+3)*4 C=$[(2+3)*4] echo 'C的值为: $C: (2+3)*4='"$C" D=$(((2+3)*4)) echo 'D的值为: $D: (2+3)*4='"$D" # 执行的结果 [root@aims02 cdrom]# sh calcu.sh # A的值为:$A:1+3=4 # B的值为:$B:98-60=38 # C的值为: $C: (2+3)*4=20 # D的值为: $D: (2+3)*4=20

Shell中的条件判断

# [ condition ](注意condition前后要有空格) # 注意:条件非空即为true,[ milla]返回true,[] 返回false。

 常用判断

(1)两个整数之间比较 = 字符串比较 -lt 小于(less than) -le 小于等于(less equal) -eq 等于(equal) -gt 大于(greater than) -ge 大于等于(greater equal) -ne 不等于(Not equal) (2)按照文件权限进行判断 -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute) (3)按照文件类型进行判断 -f 文件存在并且是一个常规的文件(file) -e 文件存在(existence) -d 文件存在并是一个目录(directory) (4)多条件判断 && :表示前一条命令执行成功时,才执行后一条命令 || :表示上一条命令指定失败时,才执行后一条命令

 案例实操

if [ 1 -eq 2 ];then echo "第1种:if then 1=2不成立" fi if [ 1 -eq 2 ] then echo "第2种:if then 1=2不成立" elif [ 3 -gt 5 ] then echo "elseif 3>5 不成立" else echo "else 其他情况" ### 最后结尾 fi # 创建test文件夹之后输出文件列表(创建成功了) [root@aims02 cdrom]# mkdir test && ll 总用量 8 -rw-r--r-- 1 root root 261 10月 20 16:20 calcu.sh drwxr-xr-x 2 root root 6 10月 20 17:16 test -rw-r--r-- 1 root root 234 10月 20 17:14 test.sh # 创建文件夹失败后输出文件列表(文件已经存在) [root@aims02 cdrom]# mkdir test || ll mkdir: 无法创建目录"test": 文件已存在 总用量 8 -rw-r--r-- 1 root root 261 10月 20 16:20 calcu.sh drwxr-xr-x 2 root root 6 10月 20 17:16 test -rw-r--r-- 1 root root 234 10月 20 17:14 test.sh

Shell流程控制

if 语句

 基本语法

 注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2)if后要有空格

if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 elif [ 条件判断式 ] then 程序 else 程序 fi

case语句

基本语法 

注意事项:

case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。双分号“;;”表示命令序列结束,相当于java中的break。最后的“*)”表示默认模式,相当于java中的default。 case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac

 for循环

 基本语法

for (( 初始值;循环控制条件;变量变化 )) do 程序 done

while循环

 基本语法

while [ 条件判断式 ] do 程序 done

案例实操

#!/bin/bash if [ 1 -eq 2 ];then echo "第1种:if then 1=2不成立" fi echo "1、if语句" if [ 1 -eq 2 ] then echo "第2种:if then 1=2不成立" elif [ 3 -gt 5 ] then echo "elseif 3>5 不成立" else echo "else 其他情况" ### 最后结尾 fi echo "" echo "2、case语句 " echo "共计有$#个参数" case $# in "1") echo "只有一个参数" ;; "2") echo "有两个参数" ;; "3") echo "有三个参数" ;; *) echo "其他参数" ;; esac echo "" echo "3、for循环" for((i=0;i<=$#;i++)) do echo "第$i个参数" done echo "for循环打印所有参数" for i in $* do echo "参数分别为是$i" done echo "" echo "4、while循环" i=0 while [ $i -le 100 ] do i=$[$i+1] done echo "最终的数据结果:$i"

 

# 执行结果 [root@aims02 cdrom]# sh test.sh 13 23 46 1、if语句 else 其他情况 2、case语句 共计有3个参数 有三个参数 3.1、for循环 第0个参数 第1个参数 第2个参数 第3个参数 3.2、for循环打印所有参数 参数分别为是13 参数分别为是23 参数分别为是46 4、while循环 最终的数据结果:101

未完待续...

最新回复(0)