Shell 語言作為類 Unix 系統(tǒng)的原生腳本,有著非常實(shí)用的價值。但對于很多剛剛接觸 Shell 腳本的同學(xué)來說,搞懂 Shell 語言的語法卻是一件非常困難的事情。甚至有人吐槽,或許沒有誰能清楚地說明白 Shell 的語法。
例如下面這兩個 Shell 腳本:
#!/bin/bash
a=10
if [ $a = 10 ]
then
echo "a is 10"
else
echo "a is not 10"
fi
#!/bin/bash
a=10
if [$a = 10 ] # $a 前沒有加空格,非法
then
echo "a is 10"
else
echo "a is not 10"
fi
這兩個腳本的區(qū)別只是 if 中的判斷表達(dá)式,一個有空格,一個沒有空格而已。但在 Shell 語法中,第二個沒有在$a
前加空格的腳本是非法的。再舉一個例子:
a=10
a = 10
在我們看來這兩個表達(dá)式?jīng)]有什么區(qū)別嘛,都是給 a 變量賦值 10。但實(shí)際上在 Shell 語法中,第一個表達(dá)式a=10
表示賦值,第二個表達(dá)式a = 10
表示判斷(判斷 a 是否等于 10)。
又例如 Shell 中我們要進(jìn)行數(shù)學(xué)運(yùn)算,其實(shí)有很多種方式可以實(shí)現(xiàn),例如:
#!/bin/bash
a=`expr 10 + 5`
echo $a
當(dāng)然了,你還可以這么寫:
#!/bin/bash
let a=10+5
echo $a
這兩種方式都可以實(shí)現(xiàn)簡單的數(shù)學(xué)運(yùn)算。但相比這兩種,我更推薦用下面這種形式:
(( a = 10 + 5 ))
echo $a
即將需要運(yùn)算的內(nèi)容放在兩對中括號里面。因?yàn)檫@種方式更加簡潔,并且功能也是最為完整,也是最為接近高級語言的寫法。
正是因?yàn)?Shell 中的語法問題以及實(shí)現(xiàn)的多樣性,許多初學(xué)者(包括我)都會對 Shell 語法感到迷惑。因此我有了寫一個 Shell 快速入門系列的想法。
寫作思路
為了能快速上手 Shell 語法,在很多時候我會對一些不是很重要的內(nèi)容進(jìn)行舍棄。這些內(nèi)容則會作為補(bǔ)充內(nèi)容在后續(xù)的文章中說明。例如在 Shell 中有許多種循環(huán)結(jié)構(gòu):for 循環(huán)、while 循環(huán)、util 循環(huán),但實(shí)際上 while 循環(huán)和 until 循環(huán)基本上是一樣的。在這種情況下我舍棄對于 until 循環(huán)這個語法的介紹。
例如在 Shell 中進(jìn)行數(shù)學(xué)運(yùn)算有很多種方式,可以使用-eq
操作符,可以使用==
操作符,可以使用=
操作符、可以使用(())
操作符等等。這個時候我也會進(jìn)行取舍,取一種最簡單、最通用的語法來實(shí)現(xiàn)。舍棄一些復(fù)雜的語法并不會影響我們使用 Shell 語言,反而會讓我們更快入手。
-
Unix系統(tǒng)
+關(guān)注
關(guān)注
0文章
15瀏覽量
9754 -
Shell
+關(guān)注
關(guān)注
1文章
371瀏覽量
23805
發(fā)布評論請先 登錄
相關(guān)推薦
linux shell 腳本入門
嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載

109個實(shí)用shell腳本分享
【shell腳本】如何快速生成一個固定大小且內(nèi)容隨機(jī)的文件?
shell腳本基礎(chǔ)知識
Linux Shell腳本經(jīng)典案例分享

為什么shell腳本中執(zhí)行命令要加exec?這個exec有什么作用呢?

評論