Shell指令碼學習筆記-變數使用及輸入輸出

來源:互聯網
上載者:User

1. 變數的定義

1.1 變數名可以由字母、數字、底線組成,但數字不能作為變數名的第一個字元。

1.2 通過賦值符號“=”來定義變數的值,e.g:

myname='test',  字串類型,不解析任何字元

myname="abcd", 雙引號內部會解析$和反斜線特殊字元

num=100; price=1.2345

now_date=`date`,  反引號會執行系統命令。

2. 變數的引用

2.1 使用貨幣符號$加變數名,來引用一個變數的值,e.g:

定義變數:test = "hello demo", 輸出變數:echo $test

2.2 變數名外面的花括弧, 主要是為了協助解譯器識別變數的邊界,e.g.:

language = 'Java'   echo "I am a ${language}Coder", 在這種情況下,如果不加花括弧,解譯器會誤以為是飲用lanuageCoder這個變數的值,而導致出錯。

3. 簡單樣本:


4. 環境變數

4.1 環境變數是指在作業系統中用來質地ing作業系統運行環境的一些參數,e.g. PATH等。

4.2 常見的環境變數:

PATH: 系統路徑

HOME: 目前使用者家目錄

HISTSIZE: 儲存曆史命令紀錄的條數

LOGNAME: 目前使用者登入名稱

HOATNAME: 主機名稱

SHELL: 目前使用者用的是哪種shell

LANG: 和語言相關的環境變數

MAIL: 目前使用者的郵件存放目錄

4.3 查看環境變數:

env: 顯示所有環境變數

5.  局部變數

5.1 在shell指令碼中由使用者自訂的變數:範圍為從被定義的地方開始,到shell指令碼結束為止,起範圍為本指令碼,離開本指令碼,變數無效,e .g.:

編寫一個指令碼,定義一個變數,輸出結果,退出指令碼,再輸出這個變數,將看不到結果:


5.2 在使用者登入的shell中定義的變數,重新登入後該變數消失,e.g.


6. 預定義變數

6.1 預定義變數和環境變數類似,也是在shell一開始就定義了的變數。不同的是,使用者只能根據shell的定義來使用這些變數,而不能重定義它。所有的預定義變數都是由$符和另一個符號組成的。

6.2 常用的shell預定義變數:

$#: 位置參數的數量

$*: 所有位置參數的內容

$?: 命令執行後返回的狀態,0表示成功,非0表示失敗

$$: 當前進程的進程號

$!: 後台啟動並執行最後一個進程號

$0: 當前執行的進程名

6.2 簡單樣本:


7. 輸出與輸入

7.1 echo命令發送資料到標準的輸出裝置,資料採用的是字串方式,echo中有兩個重要參數:

-e: 識別輸出內容裡的逸出序列,e.g. echo -e "hello\tworld"

-n: 忽略結尾的換行, e.g:echo -e -n "hello\tworld"

7.2 printf命令和echo的功能類似,printf也可以輸出變數,而且可以按照格式輸出變數,不過printf的預設輸出沒有換行,換行需要自己加“\n”,e.g:


7.3 read命令讀取標準輸入裝置的下一行,標準輸入中的新一行到分行符號前的所有字元都會被讀取,並賦予給對應的變數,e .g.:


7.4 "<<" 是一種重新導向符,重新導向指令檔中的一行作為到一個命令的輸入,操作符 <<被放在輸入重新導向的命令之後,緊跟<<的各行作為命令的輸入,輸入的結尾通過檔案結束符(ctrl+D)表示,也可以自己定義定界符,定界符後的單詞作為輸入各行結束的定界符,另外定界符需要頂格寫,e.g. 通過指令碼自動連接ftp伺服器來下載資料:

#!/bin/shftpserver=127.0.0.1ftp -i -n <<!  #。為定界符open $ftpserverusr account password #具體的操作帳號和密碼cd testdirbinget test.txtbye!
相關文章

聯繫我們

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