shell的變量功能

                                                       shell的變量功能

一、什么是變量

     變量是bash環境中非常重要的一個內容,那什么是變量呢?簡單說就是讓一某一個特定字符串來代表另一個比較復雜或者是容易變動的數據。

二、變量的顯示與設置:echo ,unset

1變量的顯示echo $變量   echo  ${變量}

 shell的變量功能

2.1變量的設置設置或者是修改某個變量的內容):用等號(=連接

變量與它的內容。

如:

shell的變量功能 

2.2變量的設置規則

1)變量與變量內容以一個等號“=”連接,如:

“myname=Vbird”

2)等號兩邊不能直接接空格符,錯誤示范如:

““myname=   Vbird”“myname=Vbird   Tsai”

3)變量名稱只能是英文字母與數字,但開頭字符不能是數字,錯誤示范如:

“2myname=Vbird”

變量命名規則如下:

a.不能使程序中的保留字:例如if, for

b.只能使用數字、字母及下劃線,且不能以數字開頭

c.見名知義

d.統一命名規則:駝峰命名法

4)變量內容若有空格符可使用雙引號” ” “或者單引號” ‘ “將變量內容結合起來:

a.雙引號內的特殊字符如$等,可以保持原本的特性,如:

shell的變量功能 

b.單引號內的特殊字符則僅為一般字符(純文本),如:

shell的變量功能 

5)可用轉義字符“\”將特殊符號(如$、\!)變成一般字符。

6、在一串命令中,還需要通過其他的命令提供的信息,可以使用反單引號“`命令`”或者“$(命令)”,如:

shell的變量功能 

7、若該變量為了增加變量內容時,則可用“$變量名稱${變量}累加內容,如:

shell的變量功能 

8、若該變量需要在其他子進程(子進程:在目前這個shell的情況下,去打開另一個新的shell,新的shell就是子進程)執行,則需要以export來使變量變成環境變量:

如:

shell的變量功能 

 

9.通常大寫字符為系統默認變量,自行設置變量可以使用小寫字符。

10.取消變量的方法為使用“unset變量名稱,如:

shell的變量功能 

三、bash中變量的種類

1、環境變量:生效范圍為當前shell進程及其子進程

變量聲明、賦值:

                export name=VALUE

                declare -x name=VALUE

變量引用:$name, ${name}

刪除變量:unset name

顯示所有環境變量(環境變量的查詢)

env

printenv

export

declare -x

#env  列出環境下所有環境變量與其內容

#set 可查看所有的變量(含環境變量與自定義變量)

bash內建的環境變量:PATH   SHELL   USER   UID   HOME   PWD ü

SHLVL    LANG     MAIL     HOSTNAME   HISTSIZE    —

2、本地變量:生效范圍為當前shell進程;對當前shell之外的其它shell進程,    包括當前shell的子shell進程均無效

變量賦值:name=‘value’ v

 可以使用引用value:

(1) 可以是直接字串; name=“root”

 (2) 變量引用:name=”$USER”

(3) 命令引用:name=`COMMAND` name=$(COMMAND) v

 變量引用${name} $name “”

           :弱引用,其中的變量引用會被替換為變量值

           :強引用,其中的變量引用不會被替換為變量值,而保持原字符串 v

 顯示已定義的所有變量:set v

 刪除變量:unset name

3、局部變量:生效范圍為當前shell進程中某代碼片斷(通常指函數)

4、位置變量:$1, $2, …來表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數。

 $1, $2, …:對應第1、第2等參數,shift [n]換位置

$0: 命令本身

$*: 傳遞給腳本的所有參數,全部參數合為一個字符串

$@: 傳遞給腳本的所有參數,每個參數為獨立字符串

$#: 傳遞給腳本的參數的個數

$@ $* 只在被雙引號包起來的時候才會有差異

set — 清空所有位置變量

5、特殊變量:$?, $0, $*, $@, $#,$$

1$?  變量保存最近的命令退出狀態

2)echo $$:查詢當前進程號

       顯示所有進程  ps -ef | grep bash   tty找到當前的終端 ,查詢當前進程號

       查看進程樹(-p 顯示進程號)pstree -p | grep bash ,查詢當前進程號 

3)echo $PPID:查詢父進程進程號

4)echo $SHLVL:查詢是當前SHELL是幾級SHELL

6、只讀變量:能聲明,但不能修改和刪除

聲明只讀變量:

                           readonly name

                            declare -r name

查看只讀變量:

                             readonly –p

四、變量內容的刪除、替代與替換

1、變量內容的刪除與替換

變量是某個值的名稱,引用變量值就稱為變量替換,$符號是變量替換符號。

變量替換的兩種格式:

     1.   $variable

     2.   ${variable}

例子1.

shell的變量功能 

命令替換是指將命令的標準輸出作為值賦給某個變量。一種是使用反引號,另一種是利用$(),并且$(可以嵌套使用)。

反引號和$()在處理雙斜線\\時是有區別的,反引號將反雙斜線處理為空格,$()將反雙斜線處理為單斜線。

五、退出狀態和退出狀態碼

進程使用退出狀態來報告成功或失敗

? 0 代表成功,1255代表失敗

? $? 變量保存最近的命令退出狀態

v 例如:

ping -c1 -W1 hostdown &> /dev/null

echo $

bash自定義退出狀態碼:

exit [n]:自定義退出狀態碼

注意:腳本中一旦遇到exit命令,腳本會立即終止;終止退出

狀態取決于exit命令后面的數字

注意:如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼

取決于腳本中執行的最后一條命令的狀態碼。

六、bash中的算術運算:help let

+, -, *, /, %取模(取余), **(乘方)在bc當中乘方是^

實現算術運算:

(1) let var=算術表達式

(2) var=$[算術表達式]

(3) var=$((算術表達式))

(4) var=$(expr arg1 arg2 arg3 …)   乘法時要轉譯* ,即\*

(5) declare –i var = 數值

(6) echo ‘算術表達式’ | bc

乘法符號有些場景中需要轉義,如*

增強型賦值:

                +=,-=, *=, /=, %=

let varOPERvalue

               例如:let count+=3

                       自加3后自賦值

自增,自減:

                 let var+=1

                 let var++

                 let var

                  -=1

                 let var–

 

原創文章,作者:Light Yagami,如若轉載,請注明出處:http://www.www58058.com/83904

(0)
Light YagamiLight Yagami
上一篇 2017-08-05 17:13
下一篇 2017-08-05 17:44

相關推薦

  • 使用httpd反向代理模塊實現tomcat負載均衡集群(上)

    前言  tomcat介紹:   tomcat是一個免費開放源代碼的web應用服務器,不是一個完整意義上的Java EE服務器;它甚至都沒有提供哪怕對一個主Java EE API的實現,但由于遵守apache開源協議,tomcat卻有為眾多的java應用程序服務器嵌入自己的產品中構建商業的java應用程序服務器,如JBoss和JOnAS等?!?/p>

    Linux干貨 2015-07-21
  • lvs的四種調度類型和調度算法介紹

    lvs是linux內核級的負載均衡解決方案,作為netfilter的補充套件,其工作在INPUT hook上。 相比nginx等負載均衡解決方案的差異如下: lvs工作于內核空間,不受用戶空間套接字和端口數量的限制,而且所有調度工作在內核空間完成,效率更高; nginx為七層負載均衡器,雖然通過stream模塊也可以做到四層負載均衡,但是受到套接字數量限制,…

    Linux干貨 2017-06-25
  • DNS配置

     DNS配置 基本的配置準備 1.安裝bind 2.開啟named服務 一、正向解析庫 1、修改/etc/named.conf配置文件 vim /etc/named.conf 修改如下行 listen-on port 53 { 10.1.44.2; } allow-query     { any; } recursion no;…

    Linux干貨 2016-10-09
  • 安全與加密、申請CA證書

    本章內容 v  1、安全機制  2、對稱加密  3、不對稱加密 4、散列算法  5、PKI 和CA v 在互聯網數據傳輸的過程的,數據的安全私密性是及其重要的,所以就有數據的加密和解密的過程。 數據加密,是一門歷史悠久的技術,指通過加密算法和加密密鑰將明文轉變為密文,而解密則是通過解密算法和解密密鑰將密文恢復為明文。它…

    Linux干貨 2016-12-04
  • 磁盤管理

    磁盤設備 一切皆文件 所有的Linux中的設備都可以使用下面命令進行操作:open(), read(), write(), close()(這些是C的函數) 塊設備:隨機訪問 字符設備:線性訪問 設備號碼: 主設備號:major number,標識設備類型 8是主要設備編號,代表類型 次設備號:minor number…

    Linux干貨 2016-09-01
  • 邏輯卷管理

    1.相關命令:lsblk、fdisk、gdisk、parted、mkfs、mke2fs、blkid、e2label、findfs、tune2fs、dumpe2fs、fsck、e2fsck、mount、swapon、swapoff、mkisofs、wodim、free、df、du、dd。 2.列出塊設備:lsblk    &nbs…

    Linux干貨 2016-09-01
欧美性久久久久