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
通常是字母、數字、下劃線組成。且以字母開頭。如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)變量內容是命令,要用反引號``或者$()把變量括起來使用。
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 命令被系統強制結束
[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)[ ]與(()) 做用是同樣的
[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
[root@oldboyedu scripts]# vim arg.sh
#!/bin/bash
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個算數運算符及含義