// 變量名和等號之間不能有空格 hello="123456"; echo $hello; // 花括號只是幫助識別變量邊界 echo ${hello}; // unset 刪除變量 unset hello; // 打印爲空 echo $hello; // 單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的 // 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,做爲字符串拼接使用 hello='12345'; echo '$hello world'; 顯示: $hello world // 雙引號裏能夠有變量 // 雙引號裏能夠出現轉義字符 echo "$hello \"world\"" 顯示: 12345 "world" // 獲取字符串長度 echo ${#hello} // 提取子字符串 // 從第2個字符開始截取5個字符 echo ${hello:1:5} // 命令的結果賦值給變量 $() || ` ` info=$(tail -n 5 ./hello.txt). echo ${info} 或 info=`head -n 5 ./hello.txt` echo ${info} // 參數傳遞 $1 獲取第一個參數 $# 獲取傳遞的參數個數 $* 獲取全部的參數 $@ 獲取全部的參數,與$*相同 ./1.sh 1 2 3 echo $1 // 1 echo $# // 3 echo $* // 1 2 3 // $* 和 $@ 的區別 (加上雙引號後纔有區別) // "$*" 是一個參數,接收的參數當一個總體 「$@」若是是多個參數,會分開接收 // $@ 加不加引號沒有影響,主要是$*加引號會結果不一樣 for i in $@; do echo $i; echo '-----split-line----' done; for i in "$*"; do echo $i; echo '-----split-line----' done; // $@把參數當成3個 循環了三次 1 -----split-line---- 2 -----split-line---- 3 -----split-line---- // 「$*"把參數當成一個總體,循環了一次 // 若是不加引號就跟$@同樣 1 2 3 -----split-line---- // 數組 hello=(1 2 3 4 5) // 數組空格分割 echo ${hello[1]} // 獲取指定索引的值 hello[0]=9 // 設置數據 echo ${hello[*]} // 輸出所有 echo ${#hello[*]} // 輸出數組長度 echo ${hello} // 輸出第一個索引的值