加法、减法、乘法、除法(取商值)、某数值的多少次方、取模运算(除法,取余数);
+ , – , * , / , ** , % ;
1、算术运算格式:
1.1 let VAR=算术运算表达式
1.2 VAR=$[算术运算表达式]
1.3 VAR=$((算术运算表达式))
1.4 VAR=$(expr $ARG1 $OP $ARG2)
NOTE:乘法符号在有些场景中需要使用转义符号;
2、增强型赋值
2.1 变量做某种算术运算后,回存至此变量中:
let i=$i+# 相当于如下表达式;
let i+=#
上面是加法运行,其他运算法则如下表示:
let i=$i+# —-> let i+=#
let i=$i-# —-> let i-=#
let i=$i*# —-> let i*=#
let i=$i/# —-> let i/=#
let i=$i%# —-> let i%=#
特殊应用:自增、自减;
自增:
VAR=$[$VAR+1]
let VAR+=1
let VAR++
自减:
VAR=$[$VAR-1]
let VAR-=1
let VAR–
举例如下:
1.1举例如下: [root@localhost tmp]# declare -i num1=8 [root@localhost tmp]# declare -i num2=5 [root@localhost tmp]# [root@localhost tmp]# echo "$num1+$num2" 8+5 [root@localhost tmp]# let sum=$num1+$num2 [root@localhost tmp]# [root@localhost tmp]# echo $sum 13 [root@localhost tmp]# let var=$num1-$num2 [root@localhost tmp]# echo $var 3 [root@localhost tmp]# let var=$num1*$num2 [root@localhost tmp]# echo $var 40 [root@localhost tmp]# let var=$num1/$num2 除法,取商值; [root@localhost tmp]# echo $var 1 [root@localhost tmp]# let var=$num1**$num2 8的5次方,8^5; [root@localhost tmp]# echo $var 32768 [root@localhost tmp]# let var=$num1%$num2 除法,取模运算,取余数; [root@localhost tmp]# echo $var 3 [root@localhost tmp]# ====================== 1.2&1.3举例如下: [root@localhost tmp]# [root@localhost tmp]# echo "$[$num1*$num2]" 40 [root@localhost tmp]# echo "$(($num1*$num2))" 40 [root@localhost tmp]# ================== 1.4举例如下: [root@localhost tmp]# [root@localhost tmp]# VAR=$(expr $num1 - $num2) [root@localhost tmp]# echo $VAR 3 [root@localhost tmp]# [root@localhost tmp]# [root@localhost tmp]# VAR=$(expr $num1 * $num2) expr: syntax error [root@localhost tmp]# VAR=$(expr $num1 \* $num2) 乘法符号要转义; [root@localhost tmp]# echo $VAR 40 [root@localhost tmp]# ===========================
shell脚本:
添加3个用户,求此3个用户的UID之和.
脚本1:
[root@localhost tmp]# [root@localhost tmp]# more adduid.sh #!/bin/bash useradd user1 useradd user2 useradd user3 echo echo "useradd user1,user2,user3 compled." echo user1id=`grep user1 /etc/passwd | cut -d':' -f3` user2id=`grep user2 /etc/passwd | cut -d':' -f3` user3id=`grep user3 /etc/passwd | cut -d':' -f3` echo echo -e "user1id is $user1id;\nuser2id is $user2id;\nuser3id is $user3id." echo echo "sum=user1id+user2id+user3id:" let sum=$user1id+$user2id+$user3id echo "sum=$sum." [root@localhost tmp]# [root@localhost tmp]# ./adduid.sh useradd user1,user2,user3 compled. user1id is 3008; user2id is 3009; user3id is 3010. sum=user1id+user2id+user3id: sum=9027. [root@localhost tmp]#
脚本2:
#!/bin/bash # id user4 &> /dev/null || useradd user4 id user5 &> /dev/null || useradd user5 id user6 &> /dev/null || useradd user6 echo echo "useradd user4/user5/user6 is complished." echo user4_id=$(id -u user4) user5_id=$(id -u user5) user6_id=$(id -u user6) echo "user4 id is : $user4_id" echo "user5 id is : $user5_id" echo "user6 id is : $user6_id" id_sum=$[$user4_id+$user5_id+$user6_id] echo echo "the id sum : $id_sum."
计算/etc/passwd文件中的第10个用户和第20个用户的ID号之和;
#!/bin/bash # user1_id=$(head -10 /etc/passwd | tail -1 | cut -d: -f3) user1_id=$(head -20 /etc/passwd | tail -1 | cut -d: -f3) echo "user1_id is $user1_id.\nuser2_id is $user2_id." echo user_sum=$[$user1_id+$user2_id] echo "user_sum is : $user_sum."
计算/etc/rc.d/init.d/functions 和 /etc/inittab文件的空白行行数之和;
#!/bin/bash # lin_num1=$(grep "^[[:space:]]*$" /etc/rc.d/init.d/functions | wc -l) lin_num2=$(grep "^[[:space:]]*$" /etc/inittab | wc -l) lin_num_sum=$[$lin_num1+$lin_num2] echo "lin_num_sum is $lin_num_sum."