shell 其餘雜項知識點筆記

// 其餘雜項知識點  

對於普通用戶,Base shell 默認的提示符是美圓符號$;對於超級用戶(root 用戶),Bash Shell 默認的提示符是井號#

-------

\#!是一個約定的標記,它告訴系統這個腳本須要什麼解釋器來執行,即便用哪種Shell;後面的/bin/bash就是指明瞭解釋器的具體位置    

-------

read 命令用來從標準輸入讀取用戶輸入的數據   

-------

點號用於執行某個腳本,甚至腳本沒有可執行權限也能夠運行。有時候在測試運行某個腳本時可能並不想爲此修改腳本權限,這時候就能夠使用.來運行腳本,很是方便。    

-------

sh-3.2# echo $SHELL     // 查看系統使用的shell爲bash       
/bin/sh

sh-3.2# bash --version  // 查看bash版本 等同 echo $BASH_VERSION    
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)    
Copyright (C) 2007 Free Software Foundation, Inc. 

--------

字符串截取操做  

${string: start :length}   // 從0開始 截取的長度(能夠省略,省略長度表明截取到末尾)      

hello='Hello World!'
echo ${hello:6:5}  // 從6開始截取5個字符    
echo ${hello:6} // 截取到末尾    

hello='Hello World!' // 從指定字符開始截取到末尾   
echo ${hello#*o} // \#表明指定截取 \*通配左邊全部字符   

sh-3.2# echo ${hello#r}
Hello World!
sh-3.2# echo ${hello#Hello Wor} // 不使用通配符也行  


# 截取右邊字符,忽略左邊   
sh-3.2# echo ${hello#*o}  // 默認從第一個指定字符開始
World!
sh-3.2# echo ${hello##*o} // 從最後一個指定字符開始匹配   
rld!

% 截取左邊,忽略右邊 (跟#相反)          
sh-3.2# echo ${hello%o*}      
Hello W    
sh-3.2# echo ${hello%%o*}        
Hell    

  
--------    
 
數組合並   

sh-3.2# arr1=(1 2 3)   
sh-3.2# arr2=(4 5 6)    
sh-3.2# arr3=(${arr1[@]} ${arr2[@]})    
sh-3.2# echo ${arr3[@]}    
1 2 3 4 5 6       

-------- 

/etc/bashrc 文件  
alias hello='ls -l' // 添加alias別名
source 執行一下  

-------- 

`` 反引號和 $() 差很少,字符串將解釋成shell命令來執行  
z:~ k$ for i in `ls`; do    
> echo $i    
> done    
Applications    
Applications  
(Parallels)  
Desktop   
z:~ k$   

--------  
((表達式))  多個表達式之間以逗號,分隔, 
    
sh-3.2# echo $((a=2,b=3)) // $獲取 (( )) 命令的結果    
3    //  以最後一個表達式的值做爲整個 (( )) 命令的執行結果  


// 使用變量時不用加$前綴,(( )) 會自動解析變量名
sh-3.2# a=2    
sh-3.2# b=3    
sh-3.2# echo $((a))    
2     


let 也是表達式求值 和(())同樣,只是當是多個表達式時,是以空格爲分割     

sh-3.2# let a=1 b=2   
sh-3.2# echo $a $b    
1 2     

$[] 跟let (()) 也差很少    

sh-3.2# echo $[1+2]     
3  

 -------- 
 
 expr 整數計算    
 
 sh-3.2# expr 1 + 2     
3
sh-3.2# expr 1 \* 3   
3
sh-3.2# a=1    
sh-3.2# expr $a    
1    
sh-3.2# expr \( 1 \* 3 \) + 2  // 括號也要轉義  
5

 -------- 
 for 循環    
for((exp1; exp2; exp3))
do
    xxx  
done

 -------- 
 退出狀態   
 
每一條 Shell 命令,當它退出(運行結束)時,都會返回一個整數值給調用(使用)它的程序,即命令的退出狀態    

if 語句的判斷條件,從本質上講,判斷的就是命令的退出狀態
  
按照慣例來講,退出狀態爲 0 表示「成功」;也就是說,程序執行完成而且沒有遇到任何問題。除 0 之外的其它任何退出狀態都爲「失敗」 


sh-3.2# echo $(( 1 * 2 ))     
2     
sh-3.2# echo $?     
0     // 0成功   
sh-3.2# abcdefg   
sh: abcdefg: command not found   
sh-3.2# echo $?   
127  // 失敗    

 -------- 

select in 循環,它能夠顯示出帶編號的菜單,用戶輸入不一樣的編號就能夠選擇不一樣的菜單,並執行不一樣的功能    


sh-3.2# select name in "aa" "bb" "cc" "dd"      
\> do     
\> echo $name    
\> done    
1) aa     
2) bb     
3) cc     
4) dd     
\#? 1     
aa     
\#? 2    
bb     
\#? 3     
cc       
\#? 4  
相關文章
相關標籤/搜索