shell環(huán)境使得用戶能與操作系統(tǒng)的內核進行交互操作,shell腳本就是一些文件描沟,我們將一系列需要執(zhí)行的命令寫入其中飒泻,通過使用某種基于解釋器的編程語言,然后通過shell執(zhí)行這些腳本吏廉。
在接下來的學習歷程中蠢络,我使用的都是Bash,它是目前大多數Linux系統(tǒng)默認的shell環(huán)境迟蜜。
1.shell腳本通常是以#!起始的文本文件刹孔,例如:
#!/bin/bash
/bin/bash 是bash解釋器的路徑,#!/bin/bash 意思就是使用bash作為shell腳本的解釋器。
2.運行腳本的兩種方式:
- 將腳本作為命令行參數
- 使腳本具有可執(zhí)行權限
先舉例第一種髓霞,新建firstScript.bash腳本卦睹,在文本中輸入 echo Hello My First Script! 然后切換到腳本所在的根目錄,終端執(zhí)行:
bash firstScript.bash
終端輸出 Hello My First Script!
可以看到腳本已經運行起來方库,并且按照我們的意愿輸出了Hello My First Script结序!這句話。
但是纵潦,如果使用命令行參數的方法運行腳本徐鹤,那么 #! 也就沒有存在的意義了,為了讓腳本能夠獨立運行邀层,我們需要賦予腳本可執(zhí)行權限返敬,并且在腳本中使用#!來指定運行腳本所需的解釋器。
打開我們的腳本文件寥院,在首行輸入#!/bin/bash
然后切換到腳本的根目錄劲赠,終端執(zhí)行:
chmod a+x firstScript.bash
該命令賦予了所有用戶firstScript的可執(zhí)行權限,使得腳本能以下面的方式運行:
./firstScript.bash
(./表示當前目錄)
或者使用腳本的完整路徑運行腳本:
/Users/bombuu/valie/firstScript.bash
3.終端打咏招弧:
終端作為交互式工具凛澎,用戶可以通過它與shell環(huán)境進行交互,在終端中打印文本是絕大多數shell腳本需要進行的基本工作估蹄,能夠執(zhí)行打印的方法有:
- 使用echo基本命令
- 使用printf命令
默認情況下塑煎,echo在每次調用后都會添加一個換行符,而printf并不會自動添加換行符臭蚁。
4.變量
腳本語言通常不需要在使用變量之前聲明其類型最铁,直接賦值即可。在Bash中變量的值都是字符串刊棕,在給變量賦值時不論有沒有使用引號,值都會以字符串的形式存儲待逞。
變量賦值:
var=value
var是變量名甥角,value是值
注意:var = value不同于var=value,前者是相等操作识樱,后者才是賦值操作嗤无。打印變量的值:
echo $var
在變量名前加上$前綴就可以打印出變量的內容。獲取字符串長度
${#var}
獲取當前使用的shell類型
echo $SHELL
5.使用shell進行數學運算
- let命令可以直接執(zhí)行基本的算數操作(變量名前不需要加$前綴)
num1=1;
num2=2;
let sum=num1+num2;
自加操作:let num1++
自減操作:let num1--
[ ] 操作符使用和let類似
sum=$[ num1 + num2 ]
在[ ]中也可以使用[ $num1 + 10 ]`使用( ( ) ) 進行操作時怜庸,變量名前需要加上(( num1 + num2 ))`
expr也可以用于基本算數操作:
sum=`expr 5 + 10`
sum=$(expr $num1 + 10)
以上方法只適用于整型当犯,不支持浮點型!
6.使用bc進行數學運算的高級操作
echo "4 * 0.25"
=> 1.00
- 設定小數精度:
echo "scale=2;10/3" | bc
scale=2即保留兩位小數割疾,同時以分號作為定界符嚎卫,將scale參數置于要執(zhí)行的操作之前。 - 進制轉換
num=3
echo "obase=2;$num" | bc
以上是將十進制轉換成二進制宏榕。
- 計算平方根以及次方
echo "sqrt(100)" | bc
echo "10^3" | bc