linux基礎學習-19.3-Shell腳本-變量

1、shell環境變量

一、變量類型 {#31-變量類型}

變量可分爲2類

1)環境變量(也能夠爲全局變量);能夠在建立他們的shell及其生出來的子shell中使用,環境變量又能夠分爲自定義環境變量和bash內置的環境變量。linux

2)局部變量(普通變量);只能在建立他們的shell函數或shell腳本中執行使用。git

環境變量

環境變量用於定義shell的運行環境,保證shell命令的正確執行,shell經過環境變量來肯定登錄用戶名、命令路徑、終端類型、登錄目錄等,全部的環境變量都是全局變量,可用於全部子進程中,包括編輯器、shell腳本和各種應用。但crond計劃任務除外,還須要從新定義環境變量。github

環境變量能夠在命令行中設置,但用戶退出這些變量志也會丟失,所以最好在用戶家目錄的.bash_profile文件中或全局配置/etc/bashrc 、/etc/profile 文件或者/etc/profile.d 目錄中定義。將環境變量放入profile 文件中,每次用戶登錄這些變量值都將初始化。shell

一般,全部環境變量均爲大寫。環境變量應用於用戶進程前,都因該用export命令導出。vim

例如:export OLDBOY=1 {#例如:export-oldboy1}

2、shell局部變量

一、 shell中變量名及變量內容的要求

通常是字母、數字、下劃線組成。且以字母開頭。如oldboy oldboy123 oldboy\_training .變量的內容,可使用單引號或雙引號引發來,或不加引號。bash

雖然變量能夠下劃線開頭,但相似變量都是比較特殊的,都是系統本身用的,咱們儘可能少用。編輯器

[root@oldboyedu ~]# _123=eee函數

[root@oldboyedu ~]# echo $_123測試

eee命令行

[root@oldboyedu ~]# a=192.168.1.2

[root@oldboyedu ~]# echo "a=$a"

a=192.168.1.2

[root@oldboyedu ~]# b='192.168.1.2'

[root@oldboyedu ~]# echo "b=$b"

b=192.168.1.2

[root@oldboyedu ~]# c="192.168.1.2."

[root@oldboyedu ~]# echo "c=${c}"

c=192.168.1.2.

二、變量名及變量內容定義小結

1)變量名只能由字母、數字。下劃線組成,且以字母開頭。

2)規範的變量名寫法定義:見名知意。

a: OldboyAge=1 每一個單詞首字母大寫

b: oldboy_age=1 每一個單詞之間用「_」

c:oldboyAgeSex=1 駝峯語法;首個單詞字母小寫,其他單詞首字母大寫。

3)=號的知識,a=1中的等號是賦值的意思,比較是否是相等於爲「==」

4)打印變量,變量名前接$符號,變量名後接緊接字符時候,要用大括號括起來

5)注意變量內容引用方法,通常爲雙引號,簡單連續字符能夠不加引號,但願原樣輸出,使用單引號。

6)變量內容是命令,要用反引號``或者$()把變量括起來使用。

3、特殊變量

一、位置變量

1)$0 獲取當前執行的shell腳本的文件名,若是執行腳本帶路徑那麼就包括腳本路徑。

2)$n 獲取當前執行的shell腳本的第n個參數值,n=1..9, 當n爲0時表示腳本的文件名,若是n大於9用括號括起來{10}{11}…… ,參數以空格隔開。

3)$#獲取當前執行的shell腳本後面接參數的總個數。

[root@oldboyedu scripts]# vim arg.sh

#!/bin/bash

##############################################################

# File Name: arg.sh

# Version: V1.0

# Author: oldboy

# Organization: www.oldboyedu.com

# Created Time : 2017-02-21 21:46:56

# Description:

##############################################################

echo $0

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13}

echo $#

arg.sh [+] 10,8 All

"arg.sh" 22L, 301C written

[root@oldboyedu scripts]# sh arg.sh

arg.sh

[root@oldboyedu scripts]# sh /server/scripts/arg.sh

/server/scripts/arg.sh

[root@oldboyedu scripts]# sh arg.sh 1 2 3 1 1 2 2 2 2 2 2 1 1 2 1 2 1

arg.sh

1 2 3 1 1 2 2 2 2 2 2 1 1

17

[root@oldboyedu scripts]# sh arg.sh 1 2 3 1 1 2 2 2 2 2 2 1 1 2 1 2 1 3 8 9 8 6

arg.sh

1 2 3 1 1 2 2 2 2 2 2 1 1

22

二、進程狀態變量

$? 獲取執行上一個指令的返回值(0爲成功,非0爲失敗)

測試

[root@oldboyedu scripts]# cd /ddf

-bash: cd: /ddf: No such file or directory

[root@oldboyedu scripts]# echo $?

1

[root@oldboyedu scripts]# sh arg.sh

arg.sh

0

[root@oldboyedu scripts]# echo $?

0

小結:

$?返回值參考

0 表示運行成功

2權限拒絕

1-125表示運行失敗,腳本命令、系統命令錯誤或參數傳遞錯誤。

126 找到該命令,但沒法執行

127 未找到要運行的命令

>128 命令被系統強制結束

4、變量的數值計算

一、 (()) 用法(經常使用於簡單的整數運算)

[root@oldboyedu scripts]# echo $((1*2+3/4-4))

-2

[root@oldboyedu scripts]# echo $[1*2+3/4-4]

-2

[root@oldboyedu scripts]# ((a=1+2*3-4%3))

[root@oldboyedu scripts]# echo $a

6

[root@oldboyedu scripts]# ((a=1+2**3-4%3))

[root@oldboyedu scripts]# echo $a

8

[root@oldboyedu scripts]# b=$((1+2**3-4%3))

[root@oldboyedu scripts]# echo $b

8

[root@oldboyedu scripts]#

小結 {#小結:}

1)「(())」 在命令行執行時不須要$符號,可是輸出須要$符號。

2)「(())」 裏全部字符之間有無或多個空格沒有任何影響。

3)[ ]與(()) 做用是同樣的

二、算術運算符號

5、如何定義變量

一、腳本中直接賦值

[root@oldboyedu scripts]# vim arg.sh

#!/bin/bash

a=6

b=2

echo "a-b =$(( $a - $b ))"

echo "a+b =$(( $a + $b ))"

echo "a*b =$(( $a * $b ))"

echo "a/b =$(( $a / $b ))"

echo "a**b =$(( $a ** $b ))"

echo "a%b = $(( $a % $b ))"

[root@oldboyedu scripts]# sh arg.sh

a-b =4

a+b =8

a*b =12

a/b =3

a**b =36

a%b = 0

二、命令行傳參 {#72-命令行傳參}

利用位置變量

[root@oldboyedu scripts]# vim arg.sh

#!/bin/bash

a=$1 #不須要把後面的$a、$b都改 {#a1---不須要把後面的a、b都改}

b=$2

echo "a-b =$(( $a - $b ))"

echo "a+b =$(( $a + $b ))"

echo "a*b =$(( $a * $b ))"

echo "a/b =$(( $a / $b ))"

echo "a**b =$(( $a ** $b ))"

echo "a%b = $(( $a % $b ))"

練習題

一、shell都有哪些變量

二、如何設置變量及設置變量的規則都有哪些?

三、敘述如何定義變量?

四、說出5個算數運算符及含義

相關文章
相關標籤/搜索