Shell 脚本的详细解读 (二)

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语句

基本语法 

注意事项:

  1. case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
  2. 双分号“;;”表示命令序列结束,相当于java中的break。
  3. 最后的“*)”表示默认模式,相当于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

未完待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值