第三章·shell编程-逻辑运算符
运算符号
- +: 加
- -: 减
- *: 乘
- /: 除
- %: 取余
- ++: 自增
- --: 自减
余数的使用
## 1.使用RANDOM取随机数
[root@zabbix01 ~]# echo $RANDOM
27899
## 随机数的范围是 :man bash 可以查到 0 and 32767 总共32768个数
## 但是有时候,我想在一个范围内随机,例如,咱们班有100个学生,我想在100内随机抽取一名幸运观众。
## 那么就需要使用取余的方式来完成了。
[root@zabbix01 ~]# echo $((RANDOM%10))
9
[root@zabbix01 ~]# echo $((RANDOM%10))
7
[root@zabbix01 ~]# echo $((RANDOM%10))
5
[root@zabbix01 ~]# echo $((RANDOM%10))
4
[root@zabbix01 ~]# echo $((RANDOM%10))
9
[root@zabbix01 ~]# echo $((RANDOM%10))
8
[root@zabbix01 ~]# echo $((RANDOM%10))
6
自增的使用
# 一般在使用运算的时候,有时候会写 i=i+1那么我们就可以简写成 i++
# for循环中
for ((i=1;i<=10;i++));do
ehco $i
done
这个循环就相当于,第一次循环的时候,i=1
第二次循环的时候,i=i+1 也就是 i=1+1即 i=2
第三次循环的时候,i=i+1 也就是 i=2+1即 i=3
第四次循环的时候,i=i+1 也就是 i=3+1即 i=4
第五次循环的时候,i=i+1 也就是 i=4+1即 i=5
第六次循环的时候,i=i+1 也就是 i=5+1即 i=6
...
一直循环到10,因为i给了一个最大范围是小于等于10
#用seq也能完成
for n in `seq 10`;do
echo $n
done
逻辑符号
常用逻辑符号
- &&: 且,前面的命令执行成功后,再执行后面的命令,前面的不成功,则后面的也不执行
- ||: 或,前面的命令执行不成功,才能执行后面的命令,前面的成功,则后面的不执行
- !: 非,取反
所有符号
符号 | 作用 |
---|---|
+、- | 加号,减号,一般用于整型、浮点型等类型的运算,其他语言中也可以做字符串的拼接 |
*、/、% | 乘号、除号、取余,一般用于运算 |
** | 幂运算 |
++、-- | 自增、自减,可前置也可后置,默认步长为1 |
&&、|| | 且、或 |
<、<=、>=、>、<>或!= | 小于 less than -lt、小于等于 less equal -le、大于等于greate equal -ge 大于greate than -gt |
==、<>或!=、= | 等于 equal -eq、不等于 not equal -ne |
<<、>> | 向左位移、向右位移 |
~、|、&、^ | 按位取反、按位异或、按位与、按位或 |
+=、-+、*=、/=、%= | 赋值运算:a+=1 即 a=a+1 ... 依次类推 |
运算方式
方法一:(())
## 1.常规运算
[root@zabbix01 script]# echo $((1+1))
2
[root@zabbix01 script]# echo $((2**10))
1024
## 2.变量运算
[root@zabbix01 script]# n1=111
[root@zabbix01 script]# n2=222
[root@zabbix01 script]# echo $((n1+n2))
333
## 3.运算赋值
# 方法一
[root@zabbix01 script]# n3=`echo $((n1*n2))`
[root@zabbix01 script]# echo $n3
24642
# 方法二
[root@zabbix01 script]# ((n4=n1*n2))
[root@zabbix01 script]# echo $n4
24642
不支持非整型
## 只要有小数,咋写都报错
[root@zabbix01 script]# echo $((2.5*4))
-bash: 2.5*4: syntax error: invalid arithmetic operator (error token is ".5*4")
[root@zabbix01 script]# echo $(( 2.5 *4 ))
-bash: 2.5 *4 : syntax error: invalid arithmetic operator (error token is ".5 *4 ")
[root@zabbix01 script]# echo $(( 2.5*4 ))
-bash: 2.5*4 : syntax error: invalid arithmetic operator (error token is ".5*4 ")
[root@zabbix01 script]# echo $(( 2.5 * 4 ))
-bash: 2.5 * 4 : syntax error: invalid arithmetic operator (error token is ".5 * 4 ")
[root@zabbix01 script]# a=2.5
[root@zabbix01 script]# b=4
[root@zabbix01 script]# echo $((a*b))
-bash: 2.5: syntax error: invalid arithmetic operator (error token is ".5")
方法二: let
[root@zabbix01 script]# let a=1+2
[root@zabbix01 script]# echo $a
3
[root@zabbix01 script]# i=1
[root@zabbix01 script]# let i++
[root@zabbix01 script]# echo $i
2
[root@zabbix01 script]# n=10
[root@zabbix01 script]# let n+=2
[root@zabbix01 script]# echo $n
12
不支持非整型
[root@zabbix01 ~]# let 2+2.5
-bash: let: 2+2.5: syntax error: invalid arithmetic operator (error token is ".5")
方法三:expr
## 错误写法
[root@zabbix01 script]# expr 2+2
2+2
## 正确姿势
[root@zabbix01 script]# expr 2 + 2
4
## 错误写法,因为*在bash里是通配符,所以echo一下就知道
[root@zabbix01 script]# expr 2 * 3
expr: syntax error
[root@zabbix01 ~]# echo expr 1 * 1
expr 1 lw.txt 1
## 正确姿势
[root@zabbix01 script]# expr 2 \* 3
6
## expr可以用来判断某一个数字是不是整型
# 如果变量是一个字符串
[root@zabbix01 ~]# age=xxx
[root@zabbix01 ~]# expr 1 + $age
expr: non-integer argument
[root@zabbix01 ~]# echo $?
2
# 如果变量是整型
[root@zabbix01 ~]# age=18
[root@zabbix01 ~]# expr 1 + $age
19
[root@zabbix01 ~]# echo $?
0
不支持非整型
[root@zabbix01 ~]# expr 1 + 2.5
expr: non-integer argument
方法四: bc
[root@zabbix01 ~]# echo 1+2 |bc
3
[root@zabbix01 ~]# echo 2.5+3 |bc
5.5
[root@zabbix01 ~]# echo 1/3 |bc
0
[root@zabbix01 ~]# echo 1/3 |bc -l
.33333333333333333333
## 它是交互式的
[root@zabbix01 ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+1
2
{1}
## 在bc中幂运算,只能用 ^不能用 **,跟开发语言有关
2^10
1024
{1}
## 进制转换
# 十六进制
[root@zabbix01 ~]# echo 'obase=16;16'|bc
10
[root@zabbix01 ~]# echo 'obase=16;15'|bc
F
[root@zabbix01 ~]# echo 'obase=16;13'|bc
D
{1}
# 二进制
[root@zabbix01 ~]# echo 'obase=2;15'|bc
1111
[root@zabbix01 ~]# echo 'obase=2;18'|bc
10010
{1}
方法五:awk
## 支持多运算
[root@zabbix01 ~]# awk 'BEGIN{print 1+2,2**10}'
3 1024
## 直接显示小数
[root@zabbix01 ~]# awk 'BEGIN{print 1+2,2**10,2.5*3,1/3}'
3 1024 7.5 0.333333
## 变量运算
# 错误写法
[root@zabbix01 ~]# x=1
[root@zabbix01 ~]# y=2
[root@zabbix01 ~]# awk 'BEGIN{print x/y}'
awk: cmd. line:1: fatal: division by zero attempted
# 正确姿势
[root@zabbix01 ~]# awk -v x=1 -v y=2 'BEGIN{print x/y}'
0.5
# 那么我们就可以引用命令行的变量了
[root@zabbix01 ~]# awk -v x=$a -v y=$b 'BEGIN{print x/y}'
2
Comments | 1 条评论
博主 לפרטים נוספים לחצו כאן
אנחנו מאמינים בעבודת צוות מקצועית כשבראש הצוות – עומד הלקוח.
הרגעים שלך בידיים טובות, בפוטו קנבס מאמינים במקצועיות, איכות ושירות.
דה סול גאים להגיש לך תכשיטי מעצבים העשויים בעבודת יד ומגוון
תכשיטי איכות מושקעים וייחודיים.
ג’חנון ביתי בעבודת יד , טעים במיוחד בכל שבת משלוחים חינם בחדרה ועמק חפר.
היום אני מנהלת קליניקה עצמאית בחדרה המתעסקת בחיבור שבין גוף ונפש.
ייחודם של ערבי שירה בציבור אותם אני מקיים,
הוא בהתאמה לכל קהל ולכל מקום, החל מאולמות גדולים ועד למפגשים אינטימיים כגון:
בתים פרטיים וכו’. אני באה לספר רק את הסיפור
שלי וכאמור, אני מתייחסת לזה כעבודה לכל דבר
ועניין ובעיני כל עבודה מכבדת
את בעליה ולכן, אני גם דורשת במהלך העבודה שיכבדו אותי, את הרצונות שלי ואת הקווים האדומים
שלי. כל מה שרציתם לדעת על תרופות גנריות לשיפור הזקפה והתפקוד המיני של הגבר.
מסלולים ודרכי ריפוי המבוססים על תכונות טבעייות המצויות בכלל המערכות המרכיבות את מי שאנו (כמובן שתכונות אלה מאפיינות את המערכות המרכיבות כל בעל חיים).
היום, הודות לרשת האינטרנט המצב הינו שונה לגמרי וכל
מי שמחפש אחר נערות ליווי בתל והמרכז, יכול למצוא את מבוקשו
ברשת. חבילת עיסוי עד הבית בתל אביב
מבוצעת על ידי צוות הספא עצמו, אשר מספק שירותי עיסוי בלבד בשלל שיטות עבור מגוון
צרכים ומטרות.