如下內容是,學習菜鳥shell教程整理的筆記
菜鳥教程之shell教程:http://www.runoob.com/linux/linux-shell.htmlphp
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶經過這個界面訪問操做系統內核的服務。
Shell腳本(shell script),是一種shell編寫的腳本程序。
業界所說的shell一般是指shell腳本,可是shell和shell script是兩個不一樣的概念。shell包括shell script和開發shell自己。通常實際生產操做過程當中用的是shell編程,編寫特定功能的shell script用來解決實際問題。html
Bash:Bourne Again Shell (free and simple to use)
Bash是大多數Linux使用的system默認shell
通常狀況下並不區分Bourne Shell 和 Bourne Again Shell,因此像#!/bin/sh 能夠改成#!/bin/bash,#! 告訴系統其後路徑指定的程序便是解釋此腳本文件的shell程序。linux
運行shell腳本的兩種方法:
./test.sh
/bin/sh test.sh or /bin/php test.php #直接以解釋器運行,就不須要在第一行指定解釋器信息。shell
刪除變量
unset xxx #unset 命令不能刪除只讀變量編程
your_name="shell" # 使用雙引號拼接 greeting="hello, "$your_name" !" greeting_1="hello,${your_name} !" echo $greeting $greeting_1 # 使用單引號拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3
hello, shell ! hello, shell ! hello, shell ! hello, ${your_name} !
string="abcd" echo ${#string} #在字符串前面加#就能夠實現
string="shell is great" echo ${string:1:4} #輸出 hell
string="shell is great" echo `expr index "$string" io` # 輸出 7 (空格也算字符)
bash支持一維數組(不支持多維數組),而且沒有限定數組的大小。數組
數組名={value0 value1 valuue2....} or array_name=( value0 value1 value2 value3 ) #也能夠單獨定義: array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
通常格式:${數組名[下標]} vuluen=${array_name[n]} 使用@符號能夠讀取數組中全部的元素 echo ${array_name[@]}
# 取得數組元素的個數 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數組單個元素的長度 length=${#array_name[n]}
Shell註釋
用#號實現單行註釋
用:<<EOF .... EOF 實現多行註釋,EOF 能夠換成其它字母 如‘ or !bash
#!/bin/bash echo "Shell 傳遞參數實例!" echo "執行的文件名:$0"; echo "第一個參數爲:$1"; echo "第二個參數爲:$2"; echo "第三個參數爲:$3"; eg:./test.sh 1 2 3
只會傳遞存在的參數個數,若是輸入的是./test.sh 1 2 3 4 則4不會被輸出編程語言
$# $* $@ 的做用及區別 #!/bin/bash echo "Shell傳遞參數實例!"; echo "第一個參數爲:$1"; echo "參數個數爲:$#"; echo "傳遞的參數做爲一個字符串顯示:$*"; echo "-- \$* 演示 --"; for i in "$*"; do echo $i done echo "-- \$@ 演示 --"; for i in "$@"; do echo $i done 執行腳本,輸出結果以下所示: Shell 傳遞的參數實例! 執行的文件名:./test.sh 第一個參數爲:1 第二個參數爲:2 第三個參數爲:3 參數個數是:3 傳遞的參數做爲一個字符串顯示:1 2 3 --$* 演示 -- 1 2 3 -- $@ 演示 -- 1 2 3 $*與$@區別:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數 一、二、3,,則 " * " 等價於 "1 2 3"(傳遞了一個參數),而 "@" 等價於 "1" "2" "3"(傳遞了三個參數)
用戶配置文件:(都在~/家目錄下)函數
~/.bash_profile(推薦在此處配置用戶環境變量,只對bash有效)——當前用戶登陸時調用學習
~/.bashrc(推薦在此處配置用戶環境變量,只對bash有效)——當前用戶bash打開時調用
array_name=(value1 value2)
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
${array_name[index]}
#!/bin/bash my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "數組的元素爲:${my_array[*]}" echo "數組的元素爲:${my_array[@]}"
用${#xxx[* or @]}獲取數組的長度 eg: #!/bin/bash my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "數組元素個數爲:${#my_array[*]}" echo "數組元素個數爲:${#my_array[@]}" $ ./test.sh 數組元素個數爲:4 數組元素個數爲:4