Shell基礎之變數

來源:互聯網
上載者:User

Shell基礎之變數
變數類別
Shell中的變數分為環境變數、位置變數、預定義變數和自訂變數四種。
環境變數
Shell環境變數是一類Shell預定義變數,用於設定系統、指令碼運行時環境的變數,由系統統一命名;環境變數的值一部分由系統設定,另一部分可由使用者自己定義。環境變數的名稱由大寫字母組成。常用的環境變數有:
HOME:使用者主目錄的絕對路徑。PATH:該變數定義了Shell預設的搜尋命令的路徑,它的值就是一系列的目錄,目錄之間用冒號分隔。比如常用的ls命令,其本身的指令碼程式放在/bin目錄下,然而我們要使用ls命令時卻不必切換到這個目錄;相反我們可以在任何目錄使用ls,這是因為我們把/bin這個值添加進了PATH這個環境變數中,Shell可以主動去這個目錄搜尋相應的程式或指令碼。PWD:當前工作目錄的絕對路徑。PS1:主提示符。有必要瞭解一下終端上命令之前的那些字元都是啥意思,如下:

m@sys:~$ cd /home/
m@sys:/home$

首先是使用者名稱m,@分隔後是主機名稱sys,‘:’分隔後面是目前的目錄,緊接著就是主命令提示字元‘′。‘’是普通使用者的主提示符,對於root使用者是‘#’,如下:

m@sys:/home$ su root
密碼:
root@sys:/home#
PS2:輔助提示符,預設的是‘>‘。這個輔助提示符在需要將命令分解成幾行時出現,只需要在行尾輸入‘\’,那麼按下斷行符號後並不執行命令,而是在下一行繼續輸入,如下:

root@sys:/home# ls | grep \
> 'm'
m
root@sys:/home#
LOGNAME:當前登陸的使用者名稱。
用env或set目錄可以顯示以及設定環境變數。位置變數
我們在執行命令或者指令碼時,後面經常會跟一些參數,那麼在shell內部是如何引用這些變數的呢?這就是位置變數的用處所在。其名稱依次為0,1,2...其中0對應命令或者執行的指令碼本身,1 n分別對應後面的第n個參數,n <= 9,所以位置參數一共只有10個。
那如果我的參數多於10個呢?第11個參數怎麼辦?這時候我們需要shift命令。從上面可知,最後一個位置變數就是9,而它只能對應第10個參數,那如果想要它對應第11個參數,就只能使原來的第一個位置參數失效,從而將後面的參數前移一位,從而1對應原來的第二個參數,以此類推。同樣的道理,對於第12以及後面的參數只需要多使用幾次shift命令就好。注意,shift命令不會使0失效,0永遠只對應指令碼或命令本身。預定義的變數
$# 實際參數的個數,不包括$0$* 所有實際參數組成的字串,也就是指令碼或命令後面所有的參數被視為一個字串賦給這個變數。$? 一個十進位數字,代表上一條命令執行後的退出狀態。若成功執行一般返回0。$$ PID,當前的進程號。$! 上一條命令的進程號。自訂變數
命名
必須由字母或底線開頭;後面可以跟任意數量的字母、數字、底線;區分大小寫,為了區別命令,建議所有字母使用大寫。建立
declare和typeset命令可以建立變數,但一般沒有特殊需要不會使用它們。建立變數最簡單有效省事的辦法就是定義變數的同時給變數賦值,類似於C語言的初始化。方法就是在變數名後面直接寫等號然後緊跟要賦予的值,必須要注意的是,等號前後不可以有空格,我就曾好幾次翻過這種錯誤,說多了都是淚啊。。。
另外,如果變數的值裡面含有空格,就需要將整個值用雙引號括起來。使用
引用一個變數時必須在變數名前面添加符號‘′,當然這是最常見的方式,除此之外還有一下幾種方式:“var” var“{var}”
加上大括弧有利於確定變數名的邊界,不然定義了一個變數myvar,這樣使用時就會混淆:

myvar=10
echo $myvarth

本意是想顯示10th,結果可能把$myvarth當成了一個新變數。

暫時就這麼多,以後再補充。

相關文章

聯繫我們

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