1. 程式人生 > >shell 變量、參數、數組章節筆記

shell 變量、參數、數組章節筆記

轉義字符 沒有 子字符串 相同 幫助 .sh $1 hello 單獨

// 變量名和等號之間不能有空格  
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} // 輸出第一個索引的值

  

shell 變量、參數、數組章節筆記