shell指令碼知識(一) 基本知識預備

來源:互聯網
上載者:User

標籤:bash   linux   centos   shell   

1、shell指令碼一般以#!開頭。


2、printf: printf “%-5s  %-10s  %-4s\n” No Name Mark。%-5s指明一個格式為靠左對齊且寬度為5的字串替代(-表示靠左對齊),如果不用-指定對齊,字串則採用靠右對齊。寬度指定了保留給某個變數的字元數。對Name而言,保留寬度是10。


3、獲得字串的長度:var=1213434545345     length=$(#var) 可以獲得字串長度,存放在length中。 獲得使用哪種shell:echo $SHELL 或者 echo $0。 echo $UID 為0則為超級使用者。


4、shell中數學運算:可以利用let、(())和[ ] 執行基本算數操作,進階操作使用 expr和bc。 n1=10 n2=12    自加:let n1++    result=$[ n1+n2 ]   retult = `expr 3+4`  result=$(expr $n1 +3)


5、文本描述符。 0 —— stdin  (標準輸入)

                               1 —— stdout (標準輸出)

                               2 —— stderr (標準錯誤)

使用 echo $? 可以列印退出狀態。

錯誤重新導向: ls + 2> out.txt      將錯誤資訊輸出到out.txt中。


6、數組定義: array_var=(1 2 3 4 5 )  或者 array_var[0] = "test1"。 echo ${array_var[*]} 輸出所有的值,echo ${array_var[2]} 輸出第二個 值。


7、擷取終端資訊。 擷取終端的行數和列數: tput cols     

                                                                                tput lines

游標移動懂啊方位(100,100)處: tput cup 100 100

獲得時間:date,日期格式如下:

$ date "+%d %B %Y"
09 February 2015


8、指令碼調試。

使用選項-x,啟動跟蹤調試shell指令碼:

$ bash -x script.sh

-x標誌能列印出所有執行的每一行命令及目前狀態。輸出到stdout。

可以在指令碼中啟用或禁止調試列印。

set -x :在執行時顯示參數和命令

set +x:禁止調試

set -v:當前命令進行讀取時顯示輸入

set +v:禁止列印輸入。


9、函數和參數。

定義函數:

function fname()

{

     statements;

}

或者

fname()

{

    statements;

}

只要使用函數名就可以調用某個函數:

$ fname ;

fname arg1 arg2 ;傳遞參數

fname()

{

   echo $1, $2; #訪問參數1和參數2

  echo “[email protected]”  ; 以列表形式一次性列印所有參數  類似有“$*”

}

$1是第一個參數

$2是第二個參數

$n是第n個參數

"[email protected]"  被擴充成“$1” "$2" "$3"等。


10、利用子shell產生一個獨立的進程

子shell本身就是獨立進程。可以使用()操作符來定義一個子shell:

pwd;

(cd /bin;ls)

pwd;

子shell中執行時,不會對當前shell有任何影響,所有改變僅限於子shell內。如上例子中兩個pwd命令輸入內容一致。


11、read 讀取鍵盤命令。

讀取n個字元並存入變數var:   read  -n  2 var

不回顯的方式讀取密碼: read -s var

顯示提示資訊: read -p “Enter input:”  var

兩秒內鍵入的字串讀入var:read  -t  2 var


12、-gt :大於; -lt :小於;  -ge:大於或等於;  -le :小於或等於;  -a:邏輯與 ;  -o : 邏輯或。 -ne 不等於, -eq 等於。

[ $var1 -ne 0  -a  $var2 -gt 2 ]  var1不等於0,並且var2大於2。


系統檔案相關測試:

[  -f $file_var  ] ;如果給定的變數包含正常檔案路徑或檔案名稱,返回真

[  -x $var  ] :如果變數包含的檔案可執行,為真

[  -d $var  ]: 包含目錄為真。

[  -e $var  ]:包含的檔案存在,為真

[  -c $var  ]:包含字元裝置,為真

[  -b $var  ]:塊裝置,為真

[  -w $var  ]:可寫,為真 ; -r可讀為真; -L 符號串連,為真。


字串比較:

[[  $str1  =  $str2  ]] :相等返回真。  !=  不等返回真。  >  大於返回真 ,  <    小於返回真。

[[  -z  $str1  ]]  :Null 字元串返回真  ,  -n  非空返回真。


shell指令碼知識(一) 基本知識預備

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.