shell程式設計小知識

來源:互聯網
上載者:User
一、使用者登陸進入系統後的系統內容變數:  
$HOME 使用者自己的目錄 
$PATH 執行命令時所搜尋的目錄 
$TZ 時區 
$MAILCHECK 每隔多少秒檢查是否有新的信件 
$PS1 在命令列時的提示號 
$PS2 當命令尚未打完時,Shell 要求再輸入時的提示號 
$MANPATH man 指令的搜尋路徑 

二、特殊變數:  

$0 這個程式的執行名字 
$n 這個程式的第n個參數值,n=1..9 
$* 這個程式的所有參數 
$# 這個程式的參數個數 
$$ 這個程式的PID 
$! 執行上一個指令的PID 
$? 執行上一個指令的傳回值 

三、shell中的變元:  
* 任一字元串 
? 一個任一字元 
[abc] a, b, c三者中之一 
[a-n] 從a到n的任一字元 

四、幾個特殊字元表示 

\b 退回 
\c 列印一行時沒有分行符號 這個我們經常會用到 
\f 換頁 
\r 斷行符號 
\t 製表 
\v 垂直製表 
\\ 反斜線本身 

五、判斷檔案的屬性  

格式:-操作符 filename 
-e 檔案存在返回0, 否則返回1 
-r 檔案可讀返回0,否則返回1
-w 檔案可寫返回0,否則返回1 
-x 檔案可執行返回0,否則返回1 
-o 檔案屬於使用者本人返回0, 否則返回1
-z 檔案長度為0返回0, 否則返回1
-f 檔案為普通檔案返回0, 否則返回1
-d 檔案為目錄檔案時返回0, 否則返回1

六、測試字串  
字串1 = 字串2 當兩個字串相等時為真 
字串1 != 字串2 當兩個字串不等時為真 
-n 字串      當字串的長度大於0時為真 
-z 字串      當字串的長度為0時為真 
字串       當串字串為非空時為真 

七、測試兩個整數關係  
數字1 -eq 數字2     兩數相等為真 
數字1 -ne 數字2     兩數不等為真 
數字1 -gt 數字2     數字1大於數字2為真 
數字1 -ge 數字2     數字1大於等於數字2為真 
數字1 -lt 數字2     數字1小於數字2為真 
數字1 -le 數字2     數字1小於等於數字2為真 

八、邏輯測試  
-a         與 
-o        或 
!        非 

shell特殊字元的引用  
=============================== 
shell中的特殊字元有 

1、$ 美元符 
2、\ 反斜線 
3、` 反引號 
4、" 雙引號 
5、< ,>,*,?,[,] 

下面我一一舉列說明 
一、$符號  
1、echo $? 顯示的是上一條指令退出狀態 
2、echo "$?" 效果同上 
3、echo '$?' 顯示的是$? 
4、echo \$? 顯示的是$? 
5、echo "\$?" 顯示的是$? 

  大家可能已經看出 $符號在雙引號中具有特殊意義 雙引號對$符號不起作用 
而單引號可以將特殊字元的的特殊意義屏蔽掉,使其能顯示為字元本身,反斜 
杠也可以將特殊字元的特殊含義屏蔽掉,使特殊字元失去特殊含義。 

二、\ 反斜線  
  反斜線的作用是將特殊符號字元的特殊含義屏蔽掉,使其還是原字元 
A=1234 
echo \$A 顯示為$A 如果不加\將顯示為1234 
echo \` 顯示為` 
echo \" 顯示為雙引號 
echo \\ 顯示為\ 

三、` 反引號  
  反引號的功能是命令替換,將反引號中的字串做為命令來執行,我們在用shell編程時經常用的到 將系統命令的執行結果賦給一個變數 

A=`date` 
echo $A 顯示的不是date而是當時的時間串 
比如有一檔案A的內容如下  
ABCDEFG 
1234456 
abcdefg 

B=`cat A|grep 234` # 檢索檔案A中含有字串234的行 
echo $B 將顯示為1234456 
echo "$B" 將顯示為什麼。 
echo "\$B" 將顯示為什麼。讀者自己試試 

四、" 雙引號 
  在系統中有些特殊字元,為避免引用這些特殊字元 往往用雙引號或單引號將這些特殊字元引起來,使其不具有特殊含義。 
  但有一部分特殊字元在引號中還是具有特殊含義,用雙引號引起來是不起作用的。本文中所列的前四個特殊字元在雙引號中還是特殊字元。為了使其不具有特殊含義一是用單引號引進來二是用\反斜線使其失去作用。 

  比如我們想原樣輸出這些特殊字元 

echo """ 
echo "$" 
echo "\" 
echo "`" 
   以上不是你所期望的結果,因為雙引號對它們不起作用,你只能這樣才能輸出這些特殊字元的原形 
echo '"' 
echo '$' 
echo '\' 
echo '`' 
或 
echo "\"" 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.