shell編程:引用變量、內部變量、條件測試、字符串比較、整數比較、文件比較、邏輯操作、引號、通配符、調試執行

http://blog.csdn.net/fansongy/article/details/6721575

1、env顯示當前的環境變量 

2、PS1='[\u@\h \w \A] \$' 可以設置bash的命令與提示符。

3、echo $$ 顯示當前bash的PID號

4、echo $?顯示上一條指令的回傳值(指令成功回傳值爲0,其他爲非零)
5、unset name 取消變量的定義

6、定義變量語法:

             變量名=變量值
              [注]:等號兩邊不能留空格,否則代表變量包含空格;若變量本身就包含空格,則整個字符串都要用雙引號括起來。

7、引用變量:

                $變量名    或   ${變量名}(強調變量)
       爲了區分變量名與命令名,建議所有的變量名都用大寫字母表示

8、export命令可以將一個局部變量提供給shell執行的其他命令使用:

export 變量名
export 變量名=變量值

9、內部變量

$?:命令執行後返回的狀態(0爲正確執行;非0爲出錯) 可用於檢查上一個命令執行是否正確
$$:當前進程的進程號
$!:最近後臺進程號
$#:位置參數的數量,$1表示第一個自變量
$0:當前執行的進程名
$1-$9:腳本參數
$*:所有位置參數的內容
 
10、條件測試:
–格式:test conditions  也可以寫作 [  conditions ]
  test在以下4種情況下使用:
–字符比較
–兩個數值的比較
–文件操作,例如文件是否存在及文件的狀態等
–邏輯操作,可以進行and/or,與其他條件聯合使用
  test用於計算一個條件表達式的值,經常在條件語句和循環語句中用來判斷某些條件是否滿足,可以使用很多shell的內部操作符。
11、字符串操作符

常用字符串屬性條件判斷

string_1=string_2

如果string_1和string_2兩個字符串相等則返回真,否則返回假;
string_1!= string_2 如果string_1和string_2兩個字符串不相等則返回真,否則返回假;
-z string 如果字符串string的長度爲0則返回真,否則返回假;
-n string 如果字符串string長度不爲0則返回真,否則返回假;
string 如果字符串string非空返回真,否則返回假。

   通常與test結合使用,如:

#!?bin/bash

string_1=a string_2=b

test string_1 = string_2

echo $?

      運行應該返回 1  。

12、整數操作符:計算整數表達式

常用的整數關係條件判斷
mum_1 –eq num_2 如果num_1和num_2相等則返回真,否則返回假;
mum_1 –ne num_2 如果num_1不等於num_2則返回真,否則返回假;
mum_1 –gt num_2 如果num_1大於num_2則返回真,否則返回假;
mum_1 –lt num_2 如果num_1小於num_2則返回真,否則返回假;
mum_1 –le num_2 如果num_1小於等於num_2則返回真,否則返回假;
mum_1 –ge num_2 如果num_1大於等於num_2則返回真,否則返回假;

 例如:

#!/bin/bash

n1=20

n2=30

[  $n1 -eq $n2 ]

echo $?

[ $n1 -gt $n2 ]

echo $?

      輸出結果分別爲 1 和 1

13、文件操作符

常用的文件屬性條件判斷
-f  fn 如果fn存在且fn爲普通文件則返回真,否則返回假。
-b  fn 如果fn存在且fn爲塊設備則返回真,否則返回假。
-e  fn 如果fn存在則返回真,否則返回假。
-d  fn 如果fn 存在且fn爲目錄則返回真,否則返回假。
-r  fn 如果fn存在且fn可讀則返回真,否則返回假。
-w  fn 如果fn存在且fn可寫則返回真,否則返回假。
-x  fn 如果fn存在且fn可執行則返回真,否則返回假。
-O  fn 如果fn存在且被當前用戶擁有則返回真,否則返回假。
-L  fn 如果fn存在且fn爲符號鏈接則返回真,否則返回假。

     用test檢測,用法同字符操作類似 例如: test -w file

14、邏輯操作符

常用的邏輯操作符屬性條件判斷

- a (邏輯與)格式爲”condition1 –a condition2”,若兩個條件都爲真,則結果爲真

- o

 
(邏輯或):格式爲”condition1 –o condition2”,若兩個條件中有一個爲真,則結果爲真
! (邏輯非):格式爲”!condition”.當condition爲真時,結果爲假,當condition爲假時,結果爲真

       連接兩個表達式 :如 [ test string1 = string2 -a test -w file ]

15、shell中的引號:

1、單引號(‘):單引號括起來的字符(包括特殊字符)都作爲普通字符。

2、雙引號:由雙引號括起來的字符,除$、\、’、和”這幾個字符仍是特殊字符並保留其特殊功能,其餘字符仍作爲普通字符對待。

 [注]:
  $:用其後指定的變量值來代替這個變量
  \:轉義字符,其後面的字符爲普通字符。通常需要加\的只有4個字符, $、\、’、和”。
  對於”號,如果沒加\,則與前一個“號匹配
3、反引號(`):   與鍵盤上的~同一個鍵上的符號。反引號括起來的字符串被shell解釋爲命令行,執行時,shell首先執行該命令行,並以它的標準輸出結果取代整個反引號部分。

16、通配符

     *:代表任何字符串。例:f*匹配以f打頭的任意字符串。
   文件名前的圓點(.)和路徑名中的的斜線(/)必須顯式匹配。
  例:”*”不能匹配.file,只有”.*”纔可以匹配.file。
     ?:代表任何單個字符。
     [ ]:代表指定的一個字符範圍,只要文件名中[ ]位置處的字符在[ ]中指定的範圍之內,那麼這個文件名就與這個模式串匹配。
  例:f[a-d] 或f[abcd]
符號類型 說明
* 當前目錄下的所有文件的名稱
*Text 當前目錄下所有文件中包含Text的文件
 [ab-dm]* 當前目錄下所有以a、b、c、d、m開頭的文件的名稱
 [ab-dm]?
當前目錄下所有以a、b、c、d、m開頭的且後面只跟
一個字符的文件的名稱
/usr/bin/?? 目錄/usr/bin下的所有名稱爲兩個字符的文件的名稱

 17、調試執行 sh -x abc.sh 調試執行abc.sh 。sh -n abc.sh 不執行腳本,只檢測語法錯誤。

 18、exit 退出程序執行。正常退出,返回值爲0;非0表示非正常退出。例如:exit 0

 19、awk命令文件內容提取 例如:檢測提取root用戶 awk -F: '$3==0 {print $1}' /etc/passwd 其中-F更改分隔符

 20、sh執行腳本的權限:對腳本有-r的權限,並且對腳本所在目錄有-rx權限。

        直接執行腳本的權限:對腳本有-rx的權限,並且對腳本所在目錄有-rx權限。

發佈了1 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章