運算符相關(guān)話題

運算符

賦值運算符

=
# "=" 即可以用作賦值忘渔,也可以用作測試
# "="左右不允許有空格
var=27
category=minerals  


#   =   作為測試操作符

if [ "$string1" = "$string2" ]
then
   command
fi

#  [ "X$string1" = "X$string2" ] 這樣寫是安全的,
#  這樣寫可以避免任意一個變量為空時的報錯。
#  (變量前加的"X"字符規(guī)避了變量為空的情況)

算術(shù)運算符

** 冪運算
let a=5**3
echo $a  # 125
+=
#自增常用的幾種寫法
a=1
let "a=$a+1"
(( a++ ))
(( a = $a + 1 ))
n=$[ $n + 1 ]  # 整數(shù)擴展符周循。在 $[ ] 中可以計算整數(shù)的算術(shù)表達(dá)式
let "a++"
注意:注意,Bash并不支持浮點運算,Bash會將帶小數(shù)點的數(shù)看做字符串
a=1.5

let "b = $a + 1.3"  # 報錯
# t2.sh: let: b = 1.5 + 1.3: syntax error in expression
#                            (error token is ".5 + 1.3")

# 如果你想在腳本中使用浮點數(shù)運算犀暑,借助bc 或外部數(shù)學(xué)函數(shù)庫

位運算

位運算很少出現(xiàn)在shell腳本中

邏輯(布爾)運算符

! 非(NOT)
fi
&& 邏輯與(AND)
if [ $condition1 ] && [ $condition2 ]
#  等同于:  if [ $condition1 -a $condition2 ]
#  返回true如果 condition1 和 condition2 同時為真...

if [[ $condition1 && $condition2 ]]    # 可行
#  注意雇初,&& 運算符不能用在[ ... ]結(jié)構(gòu)里拢肆。

數(shù)字常量

shell腳本會把數(shù)字以十進(jìn)制整數(shù)看待(base 10),除非數(shù)字加了特殊的前綴或標(biāo)記。 帶前綴0的數(shù)字是八進(jìn)制數(shù)(base 8)郭怪;帶前綴0x的數(shù)字是十六進(jìn)制數(shù)(base 16)支示。 內(nèi)嵌 # 的數(shù)字會以 BASE#NUMBER 的方式進(jìn)行求值(不能超出當(dāng)前shell支持整數(shù)的范圍)

# 十進(jìn)制數(shù): 默認(rèn)
let "dec = 32"
echo "decimal number = $dec"             # 32
# 一切正常。


# 八進(jìn)制數(shù): 帶前導(dǎo)'0'的數(shù)
let "oct = 032"
echo "octal number = $oct"               # 26
# 結(jié)果以 十進(jìn)制 打印輸出了鄙才。
# ------ ------ -----------


# 十六進(jìn)制數(shù): 帶前導(dǎo)'0x'或'0X'的數(shù)
let "hex = 0x32"
echo "hexadecimal number = $hex"         # 50

echo $((0x9abc))                         # 39612
#     ^^      ^^   雙圓括號進(jìn)行表達(dá)式求值
# 結(jié)果以十進(jìn)制打印輸出颂鸿。


# 其他進(jìn)制數(shù): BASE#NUMBER
# BASE 范圍:  2 - 64
# NUMBER 必須以 BASE 規(guī)定的正確形式書寫,如下:

let "bin = 2#111100111001101"
echo "binary number = $bin"              # 31181

let "b32 = 32#77"
echo "base-32 number = $b32"             # 231

let "b64 = 64#@_"
echo "base-64 number = $b64"             # 4031

# 這種表示法只對進(jìn)制范圍(2 - 64)內(nèi)的 ASCII 字符有效攒庵。
# 10 數(shù)字 + 26 小寫字母 + 26 大寫字母 + @ + _

雙圓括號結(jié)構(gòu)

(( a = 23 ))  #  C風(fēng)格的變量賦值嘴纺,注意"="等號前后都有空格

echo "a (initial value) = $a"   # 23

(( a++ ))     #  后綴自增'a',C-style.
echo "a (after a++) = $a"       # 24

(( a-- ))     #  后綴自減'a', C-style.
echo "a (after a--) = $a"       # 23


(( ++a ))     #  前綴自增'a', C-style.
echo "a (after ++a) = $a"       # 24

(( --a ))     #  前綴自減'a', C-style.
echo "a (after --a) = $a"       # 23


########################################################
#  注意浓冒,C風(fēng)格的++栽渴,--運算符,前綴形式與后綴形式有不同的
#+ 副作用稳懒。

n=1; let --n && echo "True" || echo "False"  # False
n=1; let n-- && echo "True" || echo "False"  # True

#  感謝 Jeroen Domburg闲擦。
########################################################



(( t = a<45?7:11 ))   # C風(fēng)格三目運算符。
#       ^  ^ ^
echo "If a < 45, then t = 7, else t = 11."  # a = 23
echo "t = $t "                              # t = 7


唯有愛與技術(shù)不可辜負(fù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末场梆,一起剝皮案震驚了整個濱河市墅冷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌或油,老刑警劉巖俺榆,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異装哆,居然都是意外死亡罐脊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蜕琴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萍桌,“玉大人,你說我怎么就攤上這事凌简∩涎祝” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵雏搂,是天一觀的道長藕施。 經(jīng)常有香客問我,道長凸郑,這世上最難降的妖魔是什么裳食? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮芙沥,結(jié)果婚禮上诲祸,老公的妹妹穿的比我還像新娘浊吏。我一直安慰自己,他們只是感情好救氯,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布找田。 她就那樣靜靜地躺著,像睡著了一般着憨。 火紅的嫁衣襯著肌膚如雪墩衙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天甲抖,我揣著相機與錄音漆改,去河邊找鬼。 笑死惧眠,一個胖子當(dāng)著我的面吹牛籽懦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氛魁,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暮顺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秀存?” 一聲冷哼從身側(cè)響起捶码,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎或链,沒想到半個月后惫恼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡澳盐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年祈纯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叼耙。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡腕窥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筛婉,到底是詐尸還是另有隱情簇爆,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布爽撒,位于F島的核電站入蛆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏硕勿。R本人自食惡果不足惜哨毁,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望首尼。 院中可真熱鬧挑庶,春花似錦言秸、人聲如沸软能。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽查排。三九已至凳枝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間跋核,已是汗流浹背岖瑰。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砂代,地道東北人蹋订。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像刻伊,于是被迫代替她去往敵國和親露戒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容