shell 笔记一
第一節:變量
大綱:
2.1.1 本地變量
2.1.2 環境變量
2.1.3 變量替換
2.1.4 位置變量
2.1.5 標準shell變量
2.1.6 特殊變量
2.1.7 影響變量的命令
2.1.8 引號
2.1.9 運算符
2.1.10 表達式替換
2.1.11 運算符的優先級
在進行講解前,我們要知道什么是shell變量?
其實linux下面的變量,linx下的shell變量和其它高級語言中的定義是一樣的,都是放在內存中一定的存儲單元,而這個存儲單元里面存放這個變量的值,而這個值是可以改變的,我們就稱它為變量.
2.1.1 本地變量
定義:是在用戶現在的shell生命期的腳本中使用;
例:[redhat@server redhat]$name="Red Hat Linux" #把變量設置為Red Hat Linux
[redhat@server redhat]$echo ${name} or #顯示變量內容
=[redhat@server redhat]$echo $name #等同上面的語意
Red Hat Linux #顯示其設定內容,
[redhat@server redhat]$set | grep "name" #查看剛才所設定的內容,或不加'grep "name"'查看用戶自己所有的本地變量,
[redhat@server redhat]$readonly name #把name這個變量設置為只讀變量,不允許再次設置,這可參考變量定義;-_-!
[redhat@server redhat]$name="He SenLin" #重新賦值
bash:name:readonly variable #只讀文件系統
[redhat@server redhat]$readonly #查看系統存在的只讀文件
附:重新登錄一下系統,再次用
[redhat@server redhat]$echo ${name}
#本地變量就不存在了,
說明本地變量只能存活在用戶shell的生命周期中,重登錄就不在了,
2.1.2 環境變量
定義:環境變量用于所有用戶進程<通稱為子進程>,包括編輯器,腳本和應用,登錄進程為父進程,shell中執行的用戶進程均為子進程,不像本地變量只用于現在的shell.
存在目錄在所有用戶的主目錄下<即/home>/.bash_profile或
如何設置環境變量?第一種方法就是編輯上面的二個文件,還可以用"export"進行設定或更改;這可不像本地變量只需 name="Red Hat Linux"那樣簡單,但卻可以把本地變量更改為環境變量;只須在本地變量結束后,輸入:export <變量名>;例,我們把name由本地變量修改為環境變量,我們可以這樣做;
[root@server root]#name="Red Hat Linux" #本地變量
[root@server root]#export name #變量name由本地升為環境
當然也可以用下面這種方法;
[root@server root]#export name="Red Hat Linux" #直接定義name為環境變量;
定義后,可通過env進行查看,不知道上面的本地環境變量由哪個命令進行查看你記住了沒有?,演示一下查看現在定義的環境變量;
[root@server root]#env | grep "name"
Red Hat Linux
同樣不加后面grep "name",這個參數也是查看所有的環境變量;更同樣的是我們也可以運行readonly這個參數給name以只讀屬性;
Tips:環境變量就是全部包含在本地變量中<因為它即可運行中父進程中也可運行于子進程中>,注意一點,本地變量不能運行在全部進程中,只有環境變量可以,再不懂就聯想一下人與自然吧;-_-!還是不會?用絕招:
[root@server root]#you=myfriend #設置本地變量name為myfriend
[root@server root]#echo ${you} #查看一下是否成功
myfriend #成功
[root@server root]#sh #更換shell環境等同重登錄,這相當一個
sh-2.05b#echo $you #用戶子進程
#沒顯示,說明不存在,真的不存在?
sh-2.05b#exit #返回bash環境
[root@server root]#echo $you #再次查看;
myfriend #又出來了,怎么回事?
[root@server root]#export you #把變量you設為環境變量;
[root@server root]#sh #再試一次;
sh-2.05b#echo $you
myfriend #ok,you see?
再不懂,,你就把我殺了吧,,什么,你不知道我住在哪?汗-_-!
再補充一點,就是在sh進程中設置環境變量是可以寫回bash環境中,因為bash是父進程,只有老的才有小的,小的怎么才能有老的哩?<長大了就有老的嘍,哦,也對!..亂語>
2.1.3 變量替換
定義:用變量的值替換它的名字.
查看方式:echo <通用本地,環境...>
可以用echo顯示可以單個變量的取值;
[root@server root]#str="this is example" #設置本地變量
[root@server root]#echo "can you see `echo $str`" #顯示
cat you see this is example #替換就到這了,不明白明再來
變量替換續
除了上面的這個方式以外還有五種哦;別急,一個一個來;-_-!<先說好,偶不是皮條>
格式 定義
${variable name} 顯示實際值到variable name 1 ${variable name :+value} 如果設置了variable name,就把value顯示,
未設置則為空; 2
${variable name:-value} 如果設置了variable name,就顯示它,未設置就顯示
value<僅顯不存本地中>>; 3
${variable name:?value} 未設置提示用戶錯誤信息value; 4
${variable name:=value} 如未設置就把value設置并顯示<寫入本地中>, 5
變量清除:
unset <變量name>
[root@server root]#echo $name #變量 name是否存在?
Red Hat Linux #存在
[root@server root]#unset name #清除name變量
[root@server root]#echo $name #是否成功
#成功
注意:如果用readonly限制了只讀屬性就會失敗,還有怎么從環境變量中去掉那個變量呢?還記的用哪個設定環境變量的嗎?對.export,只須在它后面加"-n"參數即可
2.1.4 位置變量
定義:位置變量表示$0,$1,$2,....$9
$0 $1 $2 $3 $4
腳本名 A B C D
向腳本中使用位置參數;
向系統命令傳遞參數;
例:./test<在程序中進行替換>
[root@server root]#vi /test #創建并編輯/test文件
#!/bin/bash
#test
echo "這是腳本的第一個名稱: $0"
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
echo "這是腳本的第四個位置參數: $3"
echo "這是腳本的第五個位置參數: $4"
[root@server root]#chmod u+x ./test #加執行權限;
[root@server root]#./test A B C #加參數證驗
echo "這是腳本的第一個名稱: ./test
echo "這是腳本的第二個位置參數: A
echo "這是腳本的第三個位置參數: B
echo "這是腳本的第四個位置參數: C
echo "這是腳本的第五個位置參數:
<向系統命令中傳遞位置參數>
[root@server root]#vi test1.sh #新建一個腳本文件
#!/bin/bash
#name:test1.sh
#to call: test1.sh 755 #使用方式
find ~ -perm $1 -print
$2 #系統命令
[root@server root]#chmod u+c test1.sh
[root@server root]#./test1.sh 755 date #位置一為755,2位date
/dev/ip
/dev/iput
.
.
.
Fri May 13 2:31:54 CST 2006 2.1.5 標準變量:
bash默認建立一些環境變量就是標準變量,可以通俗的說就是不是你加的而是裝好機子帶的那些環境變量, 可在/etc/profile中進行定義,
命令 意義
HOME 用戶主目錄
IFS 默認分隔符
MAIL 郵箱地址
MAILCHECK 郵箱檢查間隔
PWD 用戶當前工作目錄
LOGNAME 當前用戶登錄名
2.1.6 特殊變量
命令 意義
$# 傳遞到腳本的參數列表
$? 前個命令執行情況,0成功,其它值失敗
$$ 腳本運行的當前進程號
$! 運行腳本最后一個命令
$* 顯示腳本全部參數
2.1.7 影響變量的命令
declare 設置或顯示變量
-f 只顯示函數名
-r 創建只讀變量
-x 創建轉出變量
-i 創建整數變量
使用"+"代替"-",可以顛倒選項的意思,-r除外,
export 用于傳遞給子shell的變量
-- 表明選項結束,所有后續參數都是實參,
-f 表明在"名-值"對中的名字是函數名,
-n 把全局變量轉換成局部變量,換句話就是不再傳給shell
-p 顯示全局變量列表,
shift
用于移動位置變量,調整位置變量,使$3的值賦給$2.$2的值賦予$1. [root@server root]#vi /test
#!/bin/bash
#test
echo "這是腳本的第一個名稱: $0"
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
echo "這是腳本的第四個位置參數: $3"
echo "這是腳本的第五個位置參數: $4"
shift
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
[root@server root]#chmod u+x ./test
[root@server root]#./test A B C
echo "這是腳本的第一個名稱: ./test
echo "這是腳本的第二個位置參數: A
echo "這是腳本的第三個位置參數: B
echo "這是腳本的第四個位置參數: C
echo "這是腳本的第五個位置參數: $4"
shit #顯示的時候并沒有,加在此只會明了
echo "這是腳本的第二個位置參數: B
echo "這是腳本的第三個位置參數: C
給shfit加一個數試一下:
[root@server root]#vi ./test
#!/bin/bash
#test
echo "這是腳本的第一個名稱: $0"
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
echo "這是腳本的第四個位置參數: $3"
echo "這是腳本的第五個位置參數: $4"
shift 2
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
[root@server root]#./test A B C D
echo "這是腳本的第一個名稱: ./test
echo "這是腳本的第二個位置參數: A
echo "這是腳本的第三個位置參數: B
echo "這是腳本的第四個位置參數: C
echo "這是腳本的第五個位置參數: D
shit 2 #顯示的時候并沒有,加在此只會明了
echo "這是腳本的第二個位置參數: C
echo "這是腳本的第三個位置參數: D 第二節 引號
2.1 引號的必要性
2.2 雙引號有什么作用
2.3 單引號的作用
2.4 反引號的作用
2.5 反斜杠的作用
2.1 引號的必要性?
變量和替換操作,在腳本中執行變量替換時最容易犯的一個錯誤就是引用錯誤,為什么會出現這樣的錯誤呢,這就是因為對上面這些號,杠運用的錯誤?你想不錯嗎?那就follow me吧!
2.2 這章節我不多講,只給一個例子,不懂可以聯系我:hesenlin521@163.com
以下引用"網中人<大俠>"的一篇例子;
# TOPIC='Q & A'
# 用單引號保留特殊符號和空白 # Q1=What\'s\ your\ \"topic\"\? # echo $Q1
What's your "topic"?
# 用 \ 將特殊符號(含引號)和空白跳脫出來 # # 跳脫後﹐特殊符號和空白都保留下來。 # ANS="It is $TOPIC." # echo $ANS
It is Q & A.
# 用雙引號保留變數值($) # # 用雙引號﹐顯示出變數值。 # WRONG_ANS='It is "$TOPIC".' # echo $WRONG_ANS
It is "$TOPIC".
# 用單引號保留特殊符號和空白(同第一行) #
# 用單引號﹐全部保留﹔同時﹕ # $ 也當成一般符號保留﹐而非變數值。 # ALT_ANS='the $TOPIC'\ is\ "'$TOPIC'"\. # echo $ALT_ANS
The $TOPIC is 'Q & A'.
# 同時混合單引號﹑雙引號﹑和跳脫字符 \ # # 單引號保留全部﹔雙引號保留變數值﹔
# \ 將特殊符號跳脫出來。
在此,我講解一下各個引號的作用吧;雙引主要是轉意$,\,``<反引號>三個特殊字符的意義,其它的全部當普通字符進行顯示,
單引號,是很冷酷的那種,就是把所有的字符都當一個普通字符來顯示,
[redhat@server redhat]$echo '$PWD,\n is your \n work directory'
$PWD,\n is your \n work directory
那個杠就是屏蔽特殊字符的特殊含義,例
[redhat@server redhat]$echo *
myfiel bash tehce desktop ....
[redhat@server redhat]$echo \*
*
ok,,就講這么多了,
第三節 運算符
顧名思義就是告訴計算機哪些數值應該用哪種運算符進行運算,+,-,*,\,通過表達式對變量,數字,字符用的運算的符號就叫運算符;
通常表達式:是運算符和數字,變量,字符對象的集合體;
3.1 運算符類型;
按位運算符;在其它語言中經常見到哦,
~,<<,>>,|,^
$[]表示形式告訴shell求中括號中的表達式的值;
$[ 2+8 ]
運算符 說明
~var 反運算符,把var中所有的二進制為1的變為0,為0的變為1
var< 出的各位,最右端的各位上補上0值,每做一次按位左移就有實
var乘2;
var>>str 右移運算符,把var中所有的二進制位向右移動str位,忽略最右
移出的各位,最左的各位上補0,每次做一次右移就有實現var除以2,
var&str 與比較運算符,var和str對應位,對于每個二進制來
說,如果二都為1,結果為1.否則為0;
var^str 異域運算符,比較var和str對應位,對于二進制來說
如果二者互補,結果為1,否則為0;
var | str 或運算符,比較var和str的對應位,對于每個二進制來
說,如二都該位有一個1或都是1,結果為1,否則為0;
邏輯運算符
&& 1 1才為1
|| 有一個1即為1
賦值運算符.+=,==,^=.|=
let count =$count +=$change
第三節.表達式替換
也就是剛才用的$[]等同于$(())
運算符的優先級
級別 運算符 說明
1 =,+=,-=,/=,
%=,*=,&=,^=, 賦值運算符
|=,<<=,>>==
2 || 邏輯或
3 && 邏輯與
4 | 按位或
5 ^ 按異位與
6 & 按位與
7 ==,!= 等于/不等于
8 <=,>=,<,> 大于或等于/小于或等于/大于/小于
9 <<,>> 按位左移/按位右移
10 +,- 加減
11 *,/,% 乘,除,取模
12 ! ,~ 邏輯非,按位取反或補碼
13 -,+ 正負
大綱:
2.1.1 本地變量
2.1.2 環境變量
2.1.3 變量替換
2.1.4 位置變量
2.1.5 標準shell變量
2.1.6 特殊變量
2.1.7 影響變量的命令
2.1.8 引號
2.1.9 運算符
2.1.10 表達式替換
2.1.11 運算符的優先級
在進行講解前,我們要知道什么是shell變量?
其實linux下面的變量,linx下的shell變量和其它高級語言中的定義是一樣的,都是放在內存中一定的存儲單元,而這個存儲單元里面存放這個變量的值,而這個值是可以改變的,我們就稱它為變量.
2.1.1 本地變量
定義:是在用戶現在的shell生命期的腳本中使用;
例:[redhat@server redhat]$name="Red Hat Linux" #把變量設置為Red Hat Linux
[redhat@server redhat]$echo ${name} or #顯示變量內容
=[redhat@server redhat]$echo $name #等同上面的語意
Red Hat Linux #顯示其設定內容,
[redhat@server redhat]$set | grep "name" #查看剛才所設定的內容,或不加'grep "name"'查看用戶自己所有的本地變量,
[redhat@server redhat]$readonly name #把name這個變量設置為只讀變量,不允許再次設置,這可參考變量定義;-_-!
[redhat@server redhat]$name="He SenLin" #重新賦值
bash:name:readonly variable #只讀文件系統
[redhat@server redhat]$readonly #查看系統存在的只讀文件
附:重新登錄一下系統,再次用
[redhat@server redhat]$echo ${name}
#本地變量就不存在了,
說明本地變量只能存活在用戶shell的生命周期中,重登錄就不在了,
2.1.2 環境變量
定義:環境變量用于所有用戶進程<通稱為子進程>,包括編輯器,腳本和應用,登錄進程為父進程,shell中執行的用戶進程均為子進程,不像本地變量只用于現在的shell.
存在目錄在所有用戶的主目錄下<即/home>/.bash_profile或
如何設置環境變量?第一種方法就是編輯上面的二個文件,還可以用"export"進行設定或更改;這可不像本地變量只需 name="Red Hat Linux"那樣簡單,但卻可以把本地變量更改為環境變量;只須在本地變量結束后,輸入:export <變量名>;例,我們把name由本地變量修改為環境變量,我們可以這樣做;
[root@server root]#name="Red Hat Linux" #本地變量
[root@server root]#export name #變量name由本地升為環境
當然也可以用下面這種方法;
[root@server root]#export name="Red Hat Linux" #直接定義name為環境變量;
定義后,可通過env進行查看,不知道上面的本地環境變量由哪個命令進行查看你記住了沒有?,演示一下查看現在定義的環境變量;
[root@server root]#env | grep "name"
Red Hat Linux
同樣不加后面grep "name",這個參數也是查看所有的環境變量;更同樣的是我們也可以運行readonly這個參數給name以只讀屬性;
Tips:環境變量就是全部包含在本地變量中<因為它即可運行中父進程中也可運行于子進程中>,注意一點,本地變量不能運行在全部進程中,只有環境變量可以,再不懂就聯想一下人與自然吧;-_-!還是不會?用絕招:
[root@server root]#you=myfriend #設置本地變量name為myfriend
[root@server root]#echo ${you} #查看一下是否成功
myfriend #成功
[root@server root]#sh #更換shell環境等同重登錄,這相當一個
sh-2.05b#echo $you #用戶子進程
#沒顯示,說明不存在,真的不存在?
sh-2.05b#exit #返回bash環境
[root@server root]#echo $you #再次查看;
myfriend #又出來了,怎么回事?
[root@server root]#export you #把變量you設為環境變量;
[root@server root]#sh #再試一次;
sh-2.05b#echo $you
myfriend #ok,you see?
再不懂,,你就把我殺了吧,,什么,你不知道我住在哪?汗-_-!
再補充一點,就是在sh進程中設置環境變量是可以寫回bash環境中,因為bash是父進程,只有老的才有小的,小的怎么才能有老的哩?<長大了就有老的嘍,哦,也對!..亂語>
2.1.3 變量替換
定義:用變量的值替換它的名字.
查看方式:echo <通用本地,環境...>
可以用echo顯示可以單個變量的取值;
[root@server root]#str="this is example" #設置本地變量
[root@server root]#echo "can you see `echo $str`" #顯示
cat you see this is example #替換就到這了,不明白明再來
變量替換續
除了上面的這個方式以外還有五種哦;別急,一個一個來;-_-!<先說好,偶不是皮條>
格式 定義
${variable name} 顯示實際值到variable name 1 ${variable name :+value} 如果設置了variable name,就把value顯示,
未設置則為空; 2
${variable name:-value} 如果設置了variable name,就顯示它,未設置就顯示
value<僅顯不存本地中>>; 3
${variable name:?value} 未設置提示用戶錯誤信息value; 4
${variable name:=value} 如未設置就把value設置并顯示<寫入本地中>, 5
變量清除:
unset <變量name>
[root@server root]#echo $name #變量 name是否存在?
Red Hat Linux #存在
[root@server root]#unset name #清除name變量
[root@server root]#echo $name #是否成功
#成功
注意:如果用readonly限制了只讀屬性就會失敗,還有怎么從環境變量中去掉那個變量呢?還記的用哪個設定環境變量的嗎?對.export,只須在它后面加"-n"參數即可
2.1.4 位置變量
定義:位置變量表示$0,$1,$2,....$9
$0 $1 $2 $3 $4
腳本名 A B C D
向腳本中使用位置參數;
向系統命令傳遞參數;
例:./test<在程序中進行替換>
[root@server root]#vi /test #創建并編輯/test文件
#!/bin/bash
#test
echo "這是腳本的第一個名稱: $0"
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
echo "這是腳本的第四個位置參數: $3"
echo "這是腳本的第五個位置參數: $4"
[root@server root]#chmod u+x ./test #加執行權限;
[root@server root]#./test A B C #加參數證驗
echo "這是腳本的第一個名稱: ./test
echo "這是腳本的第二個位置參數: A
echo "這是腳本的第三個位置參數: B
echo "這是腳本的第四個位置參數: C
echo "這是腳本的第五個位置參數:
<向系統命令中傳遞位置參數>
[root@server root]#vi test1.sh #新建一個腳本文件
#!/bin/bash
#name:test1.sh
#to call: test1.sh 755 #使用方式
find ~ -perm $1 -print
$2 #系統命令
[root@server root]#chmod u+c test1.sh
[root@server root]#./test1.sh 755 date #位置一為755,2位date
/dev/ip
/dev/iput
.
.
.
Fri May 13 2:31:54 CST 2006 2.1.5 標準變量:
bash默認建立一些環境變量就是標準變量,可以通俗的說就是不是你加的而是裝好機子帶的那些環境變量, 可在/etc/profile中進行定義,
命令 意義
HOME 用戶主目錄
IFS 默認分隔符
MAIL 郵箱地址
MAILCHECK 郵箱檢查間隔
PWD 用戶當前工作目錄
LOGNAME 當前用戶登錄名
2.1.6 特殊變量
命令 意義
$# 傳遞到腳本的參數列表
$? 前個命令執行情況,0成功,其它值失敗
$$ 腳本運行的當前進程號
$! 運行腳本最后一個命令
$* 顯示腳本全部參數
2.1.7 影響變量的命令
declare 設置或顯示變量
-f 只顯示函數名
-r 創建只讀變量
-x 創建轉出變量
-i 創建整數變量
使用"+"代替"-",可以顛倒選項的意思,-r除外,
export 用于傳遞給子shell的變量
-- 表明選項結束,所有后續參數都是實參,
-f 表明在"名-值"對中的名字是函數名,
-n 把全局變量轉換成局部變量,換句話就是不再傳給shell
-p 顯示全局變量列表,
shift
用于移動位置變量,調整位置變量,使$3的值賦給$2.$2的值賦予$1. [root@server root]#vi /test
#!/bin/bash
#test
echo "這是腳本的第一個名稱: $0"
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
echo "這是腳本的第四個位置參數: $3"
echo "這是腳本的第五個位置參數: $4"
shift
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
[root@server root]#chmod u+x ./test
[root@server root]#./test A B C
echo "這是腳本的第一個名稱: ./test
echo "這是腳本的第二個位置參數: A
echo "這是腳本的第三個位置參數: B
echo "這是腳本的第四個位置參數: C
echo "這是腳本的第五個位置參數: $4"
shit #顯示的時候并沒有,加在此只會明了
echo "這是腳本的第二個位置參數: B
echo "這是腳本的第三個位置參數: C
給shfit加一個數試一下:
[root@server root]#vi ./test
#!/bin/bash
#test
echo "這是腳本的第一個名稱: $0"
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
echo "這是腳本的第四個位置參數: $3"
echo "這是腳本的第五個位置參數: $4"
shift 2
echo "這是腳本的第二個位置參數: $1"
echo "這是腳本的第三個位置參數: $2"
[root@server root]#./test A B C D
echo "這是腳本的第一個名稱: ./test
echo "這是腳本的第二個位置參數: A
echo "這是腳本的第三個位置參數: B
echo "這是腳本的第四個位置參數: C
echo "這是腳本的第五個位置參數: D
shit 2 #顯示的時候并沒有,加在此只會明了
echo "這是腳本的第二個位置參數: C
echo "這是腳本的第三個位置參數: D 第二節 引號
2.1 引號的必要性
2.2 雙引號有什么作用
2.3 單引號的作用
2.4 反引號的作用
2.5 反斜杠的作用
2.1 引號的必要性?
變量和替換操作,在腳本中執行變量替換時最容易犯的一個錯誤就是引用錯誤,為什么會出現這樣的錯誤呢,這就是因為對上面這些號,杠運用的錯誤?你想不錯嗎?那就follow me吧!
2.2 這章節我不多講,只給一個例子,不懂可以聯系我:hesenlin521@163.com
以下引用"網中人<大俠>"的一篇例子;
# TOPIC='Q & A'
# 用單引號保留特殊符號和空白 # Q1=What\'s\ your\ \"topic\"\? # echo $Q1
What's your "topic"?
# 用 \ 將特殊符號(含引號)和空白跳脫出來 # # 跳脫後﹐特殊符號和空白都保留下來。 # ANS="It is $TOPIC." # echo $ANS
It is Q & A.
# 用雙引號保留變數值($) # # 用雙引號﹐顯示出變數值。 # WRONG_ANS='It is "$TOPIC".' # echo $WRONG_ANS
It is "$TOPIC".
# 用單引號保留特殊符號和空白(同第一行) #
# 用單引號﹐全部保留﹔同時﹕ # $ 也當成一般符號保留﹐而非變數值。 # ALT_ANS='the $TOPIC'\ is\ "'$TOPIC'"\. # echo $ALT_ANS
The $TOPIC is 'Q & A'.
# 同時混合單引號﹑雙引號﹑和跳脫字符 \ # # 單引號保留全部﹔雙引號保留變數值﹔
# \ 將特殊符號跳脫出來。
在此,我講解一下各個引號的作用吧;雙引主要是轉意$,\,``<反引號>三個特殊字符的意義,其它的全部當普通字符進行顯示,
單引號,是很冷酷的那種,就是把所有的字符都當一個普通字符來顯示,
[redhat@server redhat]$echo '$PWD,\n is your \n work directory'
$PWD,\n is your \n work directory
那個杠就是屏蔽特殊字符的特殊含義,例
[redhat@server redhat]$echo *
myfiel bash tehce desktop ....
[redhat@server redhat]$echo \*
*
ok,,就講這么多了,
第三節 運算符
顧名思義就是告訴計算機哪些數值應該用哪種運算符進行運算,+,-,*,\,通過表達式對變量,數字,字符用的運算的符號就叫運算符;
通常表達式:是運算符和數字,變量,字符對象的集合體;
3.1 運算符類型;
按位運算符;在其它語言中經常見到哦,
~,<<,>>,|,^
$[]表示形式告訴shell求中括號中的表達式的值;
$[ 2+8 ]
運算符 說明
~var 反運算符,把var中所有的二進制為1的變為0,為0的變為1
var< 出的各位,最右端的各位上補上0值,每做一次按位左移就有實
var乘2;
var>>str 右移運算符,把var中所有的二進制位向右移動str位,忽略最右
移出的各位,最左的各位上補0,每次做一次右移就有實現var除以2,
var&str 與比較運算符,var和str對應位,對于每個二進制來
說,如果二都為1,結果為1.否則為0;
var^str 異域運算符,比較var和str對應位,對于二進制來說
如果二者互補,結果為1,否則為0;
var | str 或運算符,比較var和str的對應位,對于每個二進制來
說,如二都該位有一個1或都是1,結果為1,否則為0;
邏輯運算符
&& 1 1才為1
|| 有一個1即為1
賦值運算符.+=,==,^=.|=
let count =$count +=$change
第三節.表達式替換
也就是剛才用的$[]等同于$(())
運算符的優先級
級別 運算符 說明
1 =,+=,-=,/=,
%=,*=,&=,^=, 賦值運算符
|=,<<=,>>==
2 || 邏輯或
3 && 邏輯與
4 | 按位或
5 ^ 按異位與
6 & 按位與
7 ==,!= 等于/不等于
8 <=,>=,<,> 大于或等于/小于或等于/大于/小于
9 <<,>> 按位左移/按位右移
10 +,- 加減
11 *,/,% 乘,除,取模
12 ! ,~ 邏輯非,按位取反或補碼
13 -,+ 正負
轉載于:https://blog.51cto.com/simply/325363
總結
- 上一篇: WIN32控件使用大全
- 下一篇: 逐浪CMS4.6精彩预告之三:全新会员中