RHCE 學習筆記(38 ) - Shell

來源:互聯網
上載者:User

標籤:shell   rhce7   rh254   

Shell指令碼的參考書從基礎到進階可以找幾百本出來,豆子這裡過為了整個學習筆記的完整性,還是厚顏把最最基本的文法回顧一遍。最基本包括變數,比較,運算子,條件陳述式,迴圈語句。


變數分為本地變數,環境變數,位置變數


首先看看本地變數, 變數名=值的方式賦值,不過只在當前的shell裡面有效


比如,子shell裡面就無法識別了

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6F/wKiom1TS2-LBiMuOAACnDDyQ0_s513.jpg" style="float:none;" title="1.PNG" alt="wKiom1TS2-LBiMuOAACnDDyQ0_s513.jpg" />


可以通過export的方式配置環境變數,這樣子shell裡面也可以識別

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6C/wKioL1TS3M7wPUJjAACUzkDW6OQ153.jpg" style="float:none;" title="2.PNG" alt="wKioL1TS3M7wPUJjAACUzkDW6OQ153.jpg" />


不過上面的配置只是臨時生效,重啟就沒了

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6F/wKiom1TS2-Oh5QqdAABUdG3YZLk742.jpg" style="float:none;" title="3.PNG" alt="wKiom1TS2-Oh5QqdAABUdG3YZLk742.jpg" />


可以通過修改設定檔的方式永久生效。登入家目錄的時候,會自動載入家目錄下的這些隱藏檔案。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6C/wKioL1TS3M_joWvrAADJBcYZH-o396.jpg" style="float:none;" title="4.PNG" alt="wKioL1TS3M_joWvrAADJBcYZH-o396.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6F/wKiom1TS2-Tg1y2nAAA9mcNdcYo969.jpg" style="float:none;" title="5.PNG" alt="wKiom1TS2-Tg1y2nAAA9mcNdcYo969.jpg" />


上面只是對目前使用者生效,如果對所有使用者都生效,可以修改/etc/bashrc 檔案。


這些檔案的載入的順序如下所示。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6C/wKioL1TS3NDjvGV1AAMsw3OzJJk592.jpg" style="float:none;" title="6.PNG" alt="wKioL1TS3NDjvGV1AAMsw3OzJJk592.jpg" />


Shell裡面已經有預先配置的環境變數了,比如

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6F/wKiom1TS2-WhKT-qAACB2nTbV6Y611.jpg" style="float:none;" title="7.PNG" alt="wKiom1TS2-WhKT-qAACB2nTbV6Y611.jpg" />


可以根據需要修改,比如我需要提示符前面顯示整個路徑,可以修改$PS1 變數

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6C/wKioL1TS3NHwrtjvAABpXtUt7RM407.jpg" style="float:none;" title="8.PNG" alt="wKioL1TS3NHwrtjvAABpXtUt7RM407.jpg" />


此外,還有針對位置的變數,比如$1,$2分別代表第一個位置和第二個位置的變數。如果是10要括弧起來


我還可以用 $# 統計所有的變數數目,$* 輸出所有變數


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6F/wKiom1TS2-WS0xnXAAB2YGYAynw423.jpg" style="float:none;" title="9.PNG" alt="wKiom1TS2-WS0xnXAAB2YGYAynw423.jpg" />


例如:輸出第一個位置值(程式本身名字) 第二個位置的值(其實是第一個參數)

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6C/wKioL1TS3NLzV4TPAAC8_0cBWM4738.jpg" style="float:none;" title="10.PNG" alt="wKioL1TS3NLzV4TPAAC8_0cBWM4738.jpg" />


輸出的時候注意區別,單引號,雙引號和反引號


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6F/wKiom1TS2-fzRTYuAAEUTeXDcqw513.jpg" style="float:none;" title="11.PNG" alt="wKiom1TS2-fzRTYuAAEUTeXDcqw513.jpg" />


還有一些預定義的變數有特殊意義, $?表示上一次的命令的傳回值,0表示成功,其他數字表示失敗


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6C/wKioL1TS3NSARB__AAB2q0twcos364.jpg" style="float:none;" title="12.PNG" alt="wKioL1TS3NSARB__AAB2q0twcos364.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6F/wKiom1TS2-mwO_uCAAA8QIXi2_A543.jpg" style="float:none;" title="13.PNG" alt="wKiom1TS2-mwO_uCAAA8QIXi2_A543.jpg" />


比較主要可以對數值,字元比較;注意這個和其他很多語言是反的,-eq ,-gt之類的比較的是數字;==,< 反而比較的是字元。


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6C/wKioL1TS3NaSYrWAAAB5W25KxZ4599.jpg" style="float:none;" title="14.PNG" alt="wKioL1TS3NaSYrWAAAB5W25KxZ4599.jpg" />


除此還可以判斷檔案,目錄是否存在。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6C/wKioL1TS3NeTq3EoAAB-ELVub64970.jpg" style="float:none;" title="15.PNG" alt="wKioL1TS3NeTq3EoAAB-ELVub64970.jpg" />



對於數值運算,可以通過declare,(()),let和bc來操作。但是只有bc可以進行浮點運算,其他都是整數運算。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6F/wKiom1TS2-zDs_n-AACKoMGHOUE000.jpg" style="float:none;" title="16.PNG" alt="wKiom1TS2-zDs_n-AACKoMGHOUE000.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6C/wKioL1TS3NnQX0WYAAArV9fpyJ0043.jpg" style="float:none;" title="17.PNG" alt="wKioL1TS3NnQX0WYAAArV9fpyJ0043.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6F/wKiom1TS2-6yyLXvAABqTRARW5Q867.jpg" style="float:none;" title="18.PNG" alt="wKiom1TS2-6yyLXvAABqTRARW5Q867.jpg" />


條件判斷語句一般有兩種 if ..else 或者 case 的形式。


比如判斷一個使用者名稱是否存在

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6C/wKioL1TS3N_D9t6ZAAEeMEHX8Ds780.jpg" style="float:none;" title="19.PNG" alt="wKioL1TS3N_D9t6ZAAEeMEHX8Ds780.jpg" />


根據case 判斷

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6F/wKiom1TS2_qh4sWmAACZe15oGzA396.jpg" style="float:none;" title="20.PNG" alt="wKiom1TS2_qh4sWmAACZe15oGzA396.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6C/wKioL1TS3OjilTBGAAC3bFxhrqA471.jpg" style="float:none;" title="21.PNG" alt="wKioL1TS3OjilTBGAAC3bFxhrqA471.jpg" />



迴圈比較常用 while 和 for


比如從1加到10

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6F/wKiom1TS2_2ChZYZAABzO38UpAM853.jpg" style="float:none;" title="22.PNG" alt="wKiom1TS2_2ChZYZAABzO38UpAM853.jpg" />


可以通過read讀取檔案或者螢幕輸入


比如 輸出 passwd的內容

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6C/wKioL1TS3OrymwXQAACReBeoAnE907.jpg" style="float:none;" title="23.PNG" alt="wKioL1TS3OrymwXQAACReBeoAnE907.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6F/wKiom1TS3APBqg16AAGC5Ec1Lgk104.jpg" style="float:none;" title="24.PNG" alt="wKiom1TS3APBqg16AAGC5Ec1Lgk104.jpg" />


類似的,讀取test.txt的內容,建立使用者


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/59/6F/wKiom1TS3AuybWFoAAHiIxFqWBI985.jpg" style="float:none;" title="25.PNG" alt="wKiom1TS3AuybWFoAAHiIxFqWBI985.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6C/wKioL1TS3PiQPbUqAAA5qdixPuY450.jpg" style="float:none;" title="26.PNG" alt="wKioL1TS3PiQPbUqAAA5qdixPuY450.jpg" />


如果想中斷迴圈,可以用break;

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6F/wKiom1TS3A7BEU1lAAB4Yv8-qa0670.jpg" style="float:none;" title="27.PNG" alt="wKiom1TS3A7BEU1lAAB4Yv8-qa0670.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/59/6F/wKiom1TS3A-z2yaQAAAl2ue_0YU804.jpg" style="float:none;" title="28.PNG" alt="wKiom1TS3A-z2yaQAAAl2ue_0YU804.jpg" />


for 迴圈也很簡單,比如輸出一個乘法表

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6C/wKioL1TS3PuxF2E_AABRo5mGPIY400.jpg" style="float:none;" title="29.PNG" alt="wKioL1TS3PuxF2E_AABRo5mGPIY400.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/59/6F/wKiom1TS3BHDLdK5AACkjz8pI5E750.jpg" style="float:none;" title="30.PNG" alt="wKiom1TS3BHDLdK5AACkjz8pI5E750.jpg" />




本文出自 “麻婆豆腐” 部落格,請務必保留此出處http://beanxyz.blog.51cto.com/5570417/1611830

RHCE 學習筆記(38 ) - 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.