給初學者的入門知識之一(轉)
給初學者的入門知識之一(轉)[@more@]其實我也是剛剛接觸shell的.感覺這裡氣氛很好.邊學邊總結,希望對初學的兄弟有幫助,另外也希望高手兄弟們指教多謝原始碼:1.建立和執行shell程式什麼是shell程式呢? 簡單的說shell程式就是一個包含若干行shell或者linux命令的檔案.象編寫高階語言的程式一樣,編寫一個shell程式需要一個文字編輯器.如VI等.在文字編輯環境下,依據shell的語法規則,輸入一些shell/linux命令列,形成一個完整的程式檔案.執行shell程式檔案有三種方法(1)#chmod +x file(在/etc/profile中,加入export PATH=${PATH}:~/yourpath,就可以在命令列下直接執行,像執行普通命令一樣)(2)#sh file(3)# . file(4)#source file 在編寫shell時,第一行一定要指明系統需要那種shell解釋你的shell程式,如:#! /bin/bash,#! /bin/csh,/bin/tcsh,還是#! /bin/pdksh .2.shell中的變數(1)常用系統變數$ # :儲存程式命令列引數的數目$ ? :儲存前一個命令的返回碼$ 0 :儲存程式名$ * :以("$1 $2...")的形式儲存所有輸入的命令列引數$ @ :以("$1""$2"...)的形式儲存所有輸入的命令列引數(2)定義變數shell語言是非型別的解釋型語言,不象用C++/JAVA語言程式設計時需要事先宣告變數.給一個變數賦值,實際上就是定義了變數.在linux支援的所有shell中,都可以用賦值符號(=)為變數賦值.如:abc=9 (bash/pdksh不能在等號兩側留下空格 )set abc = 9 (tcsh/csh)由於shell程式的變數是無型別的,所以使用者可以使用同一個變數時而存放字元時而存放整數.如:name=abc (bash/pdksh)set name = abc (tcsh)在變數賦值之後,只需在變數前面加一個$去引用.如:echo $abc(3)位置變數當執行一個支援多個命令列引數的shell程式時,這些變數的值將分別存放在位置變數裡.其中第一個引數存放在位置變數1,第二個引數存放在位置變數2,依次類推...,shell保留這些變數,不允許使用者以令外的方式定義他們.同別的變數,用$符號引用他們.3.shell中引號的使用方法shell使用引號(單引號/雙引號)和反斜線("")用於向shell直譯器遮蔽一些特殊字元.反引號(")對shell則有特殊意義.如:abc="how are you" (bash/pdksh)set abc = "how are you" (tcsh)這個命令列把三個單片語成的字串how are you作為一個整體賦值給變數abc.abc1='@LOGNAME,how are you!' (bash/pdksh)set abc1='$LOGNAME,how are you!' (tcsh)abc2="$LOGNAME,how are you!" (bash/pdksh)set abc2="$LOGNAME,how are you!" (tcsh)LOGNAME變數是儲存當前使用者名稱的shell變數,假設他的當前值是:wang.執行完兩條命令後,abc1的內容是:$LOGNAME, how are you!.而abc2的內容是;wang, how are you!.象單引號一樣,反斜線也能遮蔽所有特殊字元.但是他一次只能遮蔽一個字元.而不能遮蔽一組字元.反引號的功能不同於以上的三種符號.他不具有遮蔽特殊字元的功能.但是可以透過他將一個命令的執行結果傳遞給另外一個命令.如:contents=`ls` (bash/pdksh)set contents = `ls` (tcsh)4.shell程式中的test命令在bash/pdksh中,命令test用於計算一個條件表示式的值.他們經常在條件語句和迴圈語句中被用來判斷某些條件是否滿足.test命令的語法格式:test expression或者[expression]在test命令中,可以使用很多shell的內部運算子.這些運算子介紹如下:(1)字串運算子 用於計算字串表示式test命令 | 含義-----------------------------------------Str1 = str2 | 當str1與str2相同時,返回TrueStr1! = str2| 當str1與str2不同時,返回TrueStr | 當str不是空字元時,返回True-n str | 當str的長度大於0時,返回True-z str | 當str的長度是0時,返回True-----------------------------------------(2)整數運算子具有和字元運算子類似的功能.只是他們的操作是針對整數test表示式 | 含義---------------------------------------------Int1 -eq int2|當int1等於int2時,返回TrueInt1 -ge int2|當int1大於/等於int2時,返回TrueInt1 -le int2|當int1小於/等於int2時,返回TrueInt1 -gt int2|當int1大於int2時,返回TrueInt1 -ne int2|當int1不等於int2時,返回True-----------------------------------------(3)用於檔案操作的運算子,他們能檢查:檔案是否存在,檔案型別等test表示式 | 含義-------------------------------------------------d file |當file是一個目錄時,返回 True-f file |當file是一個普通檔案時,返回 True-r file |當file是一個刻讀檔案時,返回 True-s file |當file檔案長度大於0時,返回 True-w file |當file是一個可寫檔案時,返回 True-x file |當file是一個可執行檔案時,返回 True------------------------------------------------(4)shell的邏輯運算子用於修飾/連線包含整數,字串,檔案運算子的表示式test表示式 | 含義----------------------------------------------------------! expr |當expr的值是False時,返回TrueExpr1 -a expr2|當expr1,expr2值同為True時,返回TrueExpr1 -o expr2|當expr1,expr2的值至少有一個為True時,返回True-----------------------------------------------------------注意:tcsh shell 不使用test命令,但是tcsh中的表示式同樣能承擔相同的功能.tcsh支援的表示式於C中的表示式相同.通常使用在if和while命令中.tcsh表示式 | 含義-------------------------------------------------------Int1 <= int2 |當int1小於/等於int2時,返回TrueInt1 >= int2 |當int1大於/等於int2時,返回TrueInt1 < int2 |當int1小於int2時,返回TrueInt1 > int2 |當int1大於int2時,返回TrueStr1 == str2 |當str1與str2相同時,返回TrueStr1 != str2 |當str1與str2不同時,返回True-r file |當file是一個可讀檔案時,返回True-w file |當file是一個可寫檔案時,返回True-x file |當file是一個可執行檔案時,返回True-e file |當file存在時,返回True-o file |當file檔案的所有者是當前使用者時,返回True-z file |當file長度為0時,返回True-f file |當file是一個普通檔案時,返回True-d file |當file是一個目錄時,返回TrueExp1 || exp2 |當exp1和exp2的值至少一個為True時,返回TrueExp1 && exp2 |當exp1和exp2的值同為True時,返回True! exp |當exp的值為False時,返回True-------------------------------------------------------待續..
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944875/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java入門知識_Java初學者須知Java
- Linux入門(2)_給初學者的建議Linux
- 告軟體測試初學者:入門需掌握的知識點
- 大資料學習入門難,給初學者支招大資料
- 寫給運營同學和初學者的SQL入門教程SQL
- Java初學者入門指南Java
- 面向初學者的快速入門tensorflow
- 【知識分享】 伺服器基礎知識【初學者必看】伺服器
- 南京某大學入門知識
- 初學者都能學會的ElasticSearch入門實戰Elasticsearch
- 模糊測試: 初學者入門指南
- Hibernate的入門知識
- React 初學者需要知道的一些知識React
- Python初學者的29個知識難點彙總Python
- 初學者的機器學習入門實戰教程!機器學習
- 初學者學習微服務 需要了解哪些知識?該如何入門微服務?有哪些優質的教程可以學習?微服務
- 給初學者的Web安全指南Web
- 給初學者的 fc 示例教程
- 給初學者的 type 命令教程
- Oracle資料庫初學者入門教程Oracle資料庫
- Java初學者需掌握的4大核心基礎知識!Java
- HTTP入門知識HTTP
- Docker入門知識Docker
- Python入門必知的知識點!Python基礎入門Python
- 寫給大資料開發初學者的話 | 附教程(轉)大資料
- 給初學者看的 shuf 命令教程
- [譯] 給初學者的 Jupyter Notebook 教程
- 知識圖譜入門——知識表示與知識建模
- OpenSSL 入門:密碼學基礎知識密碼學
- Python入門基礎知識學什麼?Python
- 給程式設計初學者的一份Java入門指南,課程禮包,請自取程式設計Java
- 【譯】Jest 初學者教程:JavaScript 測試入門JavaScript
- 初學Java該學哪些知識?這6大知識必學Java
- Java初學者必備4大核心基礎知識Java
- Java四大知識點講解,初學者必看!Java
- 初學者入門大資料,學習Hadoop的5個理由大資料Hadoop
- Java要怎麼入門?初學者要怎麼學?Java
- 寫給初入門/半路出家的前端er前端
- python入門基本知識Python