1 bash和sh的區別
bash是 Bourne Again SHell 是linux標準的默認shell ,它基於Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全兼容Bourne shell,也就是說用Bourne shell的腳本不加修改可以在bash中執行。
sh是Bourne shell 這個是UNIX標準的默認shell,對它評價是concise簡潔 compact緊湊 fast高效 有AT&T編寫,屬於系統管理shell。
、、、、、、、、、、、、、
sh或是執行腳本,或是切換到sh這個bash裏,默認的shell是bash,你可以試試tcsh啊,csh啊,ksh,zsh什麼的,看看別的shell是什麼樣子的。當然,linux中sh是鏈接到bash上的,所以sh與bash在功能上是沒有區別的。
還有就是在執行腳本的時候是用sh + 腳本名的方式來執行,其實,大部分的時候,簡單腳本只要權限設置正確,可以直接執行,不需要sh命令的。
2 $、$()、${}的區別
2.1$
$ 在linux裏是用來指明變量,例如$JAVA_HOME,是指JAVA_HOME的環境變量。
echo ,例如腳本內獲取參數的格式爲:$n,n 代表一個數字,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推。
2.2 $()
小括號裏面是linux命令
比如
cat ()內容。
2.3 ${}
大括號裏面則是數組變量
舉個例子
$A = (hello linux shell)
$echo ${A[0]}
則會輸出hello
3 $組合命令
$$
Shell本身的PID(ProcessID,即腳本運行的當前進程ID號)
$!
Shell最後運行的後臺Process的PID(後臺運行的最後一個進程的進程ID號)
$?
最後運行的命令的結束代碼(返回值)即執行上一個指令的返回值 (顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)
$-
顯示shell使用的當前選項,與set命令功能相同
*“用「”」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數,此選項參數可超過9個。
@“用「”」括起來的情況、以"$1" “n” 的形式輸出所有參數。
*類似,但是可以當作數組用
$#
添加到Shell的參數個數
$0
Shell本身的文件名
n
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。