區分兩個 Shell
Shell 語言與 Shell 解釋器
Shell 語言
寫 Shell 腳本使用的是 Shell 語言,Shell 既是一種命令語言,又是一種程序設計語言。
- 作為命令語言,它交互式地解釋和執行用戶輸入的命令
- 作為程序設計語言,它定義了各種變量和參數,並提供了許多在高級語言中才具有的控制
Shell 腳本解釋器
解析Shell 使用的是 Shell 腳本解釋器,一個用 C 語言編寫的程序,它是用戶使用 Unix/Linux 的橋梁,接口程序。常見的腳本解釋器有 bash、sh、csh、ksh......
Shell 的變量
學習 Shell 變量的時候,對變量的定義和使用有一絲迷惑,看下面這個程序。

運行結果
1+2 xiaoming
看到這個運行結果,我感到出乎意料,首先 c 經驗不等於3,d 表示字符串不加引號竟然不報錯!!!!!!不知到 Linux 課上有沒有講過,可惜我沒有那一門課,百度......
Shell 的所有變量默認都是字符型。
所以 a、b、c 直接被當做字符串啦,那變量 a、b 如何進行算術運算呢? 查看 菜鳥教程。
使用 expr 命令,例如 c=`expr $a+$b` 可以得到正常的結果。同時還有其他方式可以進行求值。 具體參考 Linux Shell腳本攻略:shell中各種括號()、(())、[]、[[]]、{}的作用
使用 $[] 方式 c=$[$a+$b],類比 [] 不加前面的$,表示進行(算數比較、字符串 ==|!= 的比較、使用數組索引)。
使用 $(())方式 c=(($a+$b)) 只要括號中的運算符、表達式符合C語言運算規則,都可用在$((exp))中,甚至是三目運算符。
思考:當兩個字符串使用 算數運算的時候會得到什么結果呢?
參考鏈接
