shell必懂知識點

2021-07-06 11:32:58 字數 2419 閱讀 9653

1、

exec 3>&1    #在當前shell環境中將檔案標識3與標準輸出相關聯(備份乙個stdout)
exec 3>&-   #為shell後續**關閉檔案標識3

2、&>/dev/null解釋

:> 代表重定向到**,例如:echo "123" > /home/123.txt

:/dev/null 代表空裝置檔案

:2> 表示stderr標準錯誤

:& 表示等同於的意思,2>&1,表示2的輸出重定向等同於1

:1 表示stdout標準輸出,系統預設值是1,

所以">/dev/null"等同於 "1>/dev/null"

3、shell變數名使用的特殊字元:

$# 傳送給命令shell的引數序號 個數

$- 在shell啟動或使用set命令時提供選項 

$? 上一條命令執行後返回的值 

$$ 當前shell的程序號 

$! 上乙個子程序的程序號 

$@ 所有的引數,每個都用雙括號括起 

$* 所有引數,用雙括號括起 

$n 位置引數值,n表示位置 

$0 當前shell名

$? 是上個命令列執行是否成功,成功為0

4、if判斷總結

條件表示式

檔案表示式

if [ -f  file ]    如果檔案存在

if [ -d ...   ]    如果目錄存在

if [ -s file  ]    如果檔案存在且非空 

if [ -r file  ]    如果檔案存在且可讀

if [ -w file  ]    如果檔案存在且可寫

if [ -x file  ]    如果檔案存在且可執行   

整數變數表示式

if [ int1 -eq int2 ]    如果int1等於int2   

if [ int1 -ne int2 ]    如果不等於    

if [ int1 -ge int2 ]       如果》=

if [ int1 -gt int2 ]       如果》

if [ int1 -le int2 ]       如果<=

if [ int1 -lt int2 ]       如果<

字串變數表示式

if  [ $a = $b ]                 如果string1等於string2

字串允許使用賦值號做等號

if  [ $string1 !=  $string2 ]   如果string1不等於string2       

if  [ -n $string  ]             如果string 非空(非0),返回0(true)  

if  [ -z $string  ]             如果string 為空

if  [ $sting ]                  如果string 非空,返回0 (和-n類似)    

5、read引數

#

延遲五秒,沒有輸入將自動退出

read -p "

input a number:

" -t 5 number

6、陣列總結

array_name

=(value0 value1 value2 value3)

name[0]="zara"

name[1]="qadir"

name[2]="mahnaz"

name[3]="ayan"

name[4]="daisy"

echo "first index: $"

echo "second index: $"

$./test.sh

first index: zara

second index: qadir

使用@ 或 * 可以獲取陣列中的所有元素,例如:

name[0]="zara"

name[1]="qadir"

name[2]="mahnaz"

name[3]="ayan"

name[4]="daisy"

echo "first method: $"

echo "second method: $"

執行指令碼,輸出:
$./test.sh

first method: zara qadir mahnaz ayan daisy

second method: zara qadir mahnaz ayan daisy

獲取陣列長度的方法與獲取字串長度的方法相同,例如:
# 取得陣列元素的個數

length=$

# 或者

length=$

# 取得陣列單個元素的長度

lengthn=$

Shell 程式設計知識點

linux 的選項又分為短格式選項和長格式選項。command1 command2.不管command1命令是否執行成功,command2命令都執行。command1 command2.command1命令和command2命令同時執行 command1 command2.只在command1命令執...

shell 知識點備忘

與檔案存在與否的判斷 e 是否存在 f 是否為普通檔案 d 是否為目錄 s 是否為空的檔案 p 是否為管道檔案 b 是否為塊裝置檔案 c 是否為字元裝置檔案 l 是否為軟鏈結 s 是否socket檔案 與檔案許可權有關的判斷 r 是否有可讀的許可權 w 是否有可寫的許可權 x 是否有可執行許可權 u...

shell常用知識點

0 shell中if,while的條件語句怎麼寫 test和 字串比較 數字比較 g,l,e,n,q,t的組合 greater than,less than,equil,not equil,greater equil,less equil 1 shell的字串 str hello str hello...