Shell 腳本常用命令


Shell腳本是Linux開發工作中常用的工具,但是我一直沒有找到一個適合自己的簡明扼要的HandBook。在工作過程中整理了一下,貼在這里已備查看。

 

1           Shell中的特殊符號

1.1           $  美元符號。用來表示變量的值。如變量NAME的值為Mike,則使用$NAME就可以得到“Mike”這個值。

1.2          #  井號。除了做為超級用戶的提示符之外,還可以在腳本中做為注釋的開頭字母,每一行語句中,從#號開始的部分就不執行了。

1.3           “”  雙引號。shell不會將一對雙引號之間的文本中的大多數特殊字符進行解釋,如#不再是注釋的開頭,它只表示一個井號“#”。但$仍然保持特殊含義。(在雙引號中的$加變量名,即:$PARAM_NAME,依然會轉換成變量的值。)

1.3.1     雙引號對於某些特殊符號是不起作用的, 例如:”,$,\,`(反引號)

1.3.2     雙引號和單引號不能嵌套。即:echo ‘””’  輸出””,  echo “’’” 輸出’’

1.4           ‘’  單引號。shell不會將一對單引號之間的任何字符做特殊解釋。(在雙引號中的$加變量名,即:$PARAM_NAME,不會轉換成變量的值。)

1.4.1     echo “$HOME”    (結果:/home/xiongguoan)

1.5          ``  倒引號。命令替換。在倒引號內部的shell命令首先被執行,其結果輸出代替用倒引號括起來的文本,不過特殊字符會被shell解釋。

1.5.1     echo ‘$HOME’    (結果:$HOME)

1.6          \  斜杠。用來去掉在shell解釋中字符的特殊含義。在文本中,跟在\后面的一個字符不會被shell特殊解釋,但其余的不受影響。

1.7          []中括號, 主要是用來測試條件的,通常放在if語句的后面。 (不過還是不太明白),但是中括號本身不會在測試語句執行后消失。

1.7.1     echo [$HOME]   (結果:出現錯誤)

1.7.2     echo [$HOME ]   (結果:[/home/xiongguoan ]) (注意:HOME后面有空格哦。)

1.7.3     echo [$HOME –eq ‘/xiong’]  (結果:[/home/xiongguoan –eq /xiong])

 

1.8          {}大括號,主要是和$符號配合,作為字符串連接來使用

1.8.1     echo ${HOME}ismydir   (結果:/home/xiongguoanismydir)

 

2           預定義的變量

2.1          特殊變量

 

$      shell變量名的開始,如$var

|      管道,將標准輸出轉到下一個命令的標准輸入

$#     記錄傳遞給Shell的自變量個數

#      注釋開始

&      在后台執行一個進程

?     匹配一個字符

*      匹配0到多個字符(與DOS不同,可在文件名中間使用,並且含.)

$-     使用set及執行時傳遞給shell的標志位

$!     最后一個子進程的進程號 

$?     取最近一次命令執行后的退出狀態(返回碼)

$*     傳遞給shell script的參數

$@     所有參數,個別的用雙引號括起來

$0     當前shell的名字

$n     (n:1-) 位置參數

$$     進程標識號(Process Identifier Number, PID)

>      輸出重定向

  <      輸入重定向

  >>      輸出重定向(追加方式)

  []     列出字符變化范圍,如[a-z]

 

 

2.2          代值變量

 

* 任意字符串 

? 一個任意字符 

[abc] a, b, c三者中之一 

[a-n] 從a到n的任一字符 

 

 

2.3          特殊字符的表達

 

\b 退回  
\c 打印一行時沒有換行符 這個我們經常會用到  
\f 換頁  
\r 回車  
\t 制表  
\v 垂直制表  
\\ 反斜線本身 

 

2.4          其他字符

2.4.1     分號

; 表示一行結束

2.4.2     圓括號

() 表示在新的子shell中執行括號內的命令(這樣可以不改變當前shell的狀態。)

但是圓括號在單/雙引號內失去作用,只作為普通字符。

2.4.3     花括號

2.4.3.1    分割命令的用法

與圓括號相似,但是:1. 花括號內的命令在當前shell中執行;2.花括號必須作為命令的第一個字符出現。

2.4.3.2    引用變量的用法

在$后面,表示變量名的開始和結束

 

2.4.4     方括號

相當與test命令,用來執行測試條件,通常用在需要判斷條件的語句后面,例如:if,while等等。

 

 

3           設置變量

3.1          格式:VARNAME=value (i.e. PARAM=’hello’)

3.2          注意:

3.2.1     等號的前后不能有空格

3.2.2     如果變量的值是一個命令的執行結果,請加上反引號(`)。

 

4           引用變量

4.1          $VARNAME

4.1.1     e.i.  echo $HOME   (結果:/home/xiongguoan)

4.2          變量默認值

4.2.1     在引用一個變量的時候可以設定默認值。如果在此之前,該變量已經設定了值,則此默認值無效。如果此時變量沒有被設定值,則使用此默認值(但是沒有改變此變量的值)。

4.2.2     echo Hello ${UNAME:-there}     #其中there是UNAME的默認值

4.2.3     其他關於默認值與判讀變量的方法:

 

利用大括號表示變量替換

表示形式

說明

${VARIABLE}

基本變量替換。大括號限定變量名的開始和結束

${VARIABLE:-DEFAULT}

如果VARIABLE沒有值,則這種表示形式返回DEFAULT的值

${VARIABLE:=DEFAULT}

如果VARIABLE沒有值,則這種表達形式返回DEFAULT的值。另外,如果VARIABLE沒有設置,則把DEFAULT的值賦予它

${VARIABLE:+VALUE}

如果VARIABLE被設置,則這種表示形式返回VALUE;否則,返回一個空串

${# VARIABLE}

這種表示形式返回VARIABLE值的長度,除非VARIABLE是* 或者@在為*或者@的特殊情況下,則返回$@所表示的元素的個數。要記住,$ @保存傳給該腳本的參數清單

${VARIABLE:?MESSAGE}

如果VARIABLE沒有值,則這種表示形式返回MESSAGE的值。Shell也顯示出VARIABLE的名字,所以這種形式對捕獲得錯誤很有用

 

 

4.2.4     注意:

4.2.4.1    使用${VALIABLE:?MESSAGE},如果發現此變量此時沒有值,則腳本停止運行並顯示行號和變量名稱。 主要用於調試。

4.2.4.2     

 

5           位置變量

5.1          使用$1,$2,$3…$9,${10},${11}…來代表輸入的參數。其中$0代表被執行的命令或者腳本的名字。$1,$2…代表輸入的第1,2…個參數

5.2          例子:

# cat count.sh#!/bin/sh

A=$1             # 將位置$1的數值讀入,並賦給變量A

B=$2             # 將位置$2的數值讀入,並賦給變量B

C=$[$A+$B]       # 將變量A與B的值相加,將結果賦給C

echo $C          # 顯示C的數值

 

結果:

# ./count.sh  3  6

9

# ./count.sh 34  28

62

5.3          $@和$*代表參數的列表,$#代表參數的數量 (不知道$@和$*之間的差別)

 

 

6           運算符和優先級

 

Shell運算符和它們的優先級順序

級別

運算符

說明

13

-, +

單目負、單目正

12

!, ~

邏輯非、按位取反或補碼

11

* , / , %

乘、除、取模

10

+, -

加、減

9

<< , >>

按位左移、按位右移

8

< =, > =,  < , >

小於或等於、大於或等於、小於、大於

7

= = , ! =

等於、不等於

6

&

按位與

5

^

按位異或

4

 |

按位或

3

&&

邏輯與

2

| |

邏輯或

1

=, + =, - =, * =, /=, % =, & =, ^ =, | =, << =, >> =

賦值、運算且賦值

 

 

 

7           source / export / let / unset

7.1          source

7.1.1     正常情況下,腳本中執行的參數設置只能影響到shell腳本本身的執行環境,不能影響到調用此shell的腳本。

7.1.2     使用source命令執行腳本,可以讓腳本影響到父shell的環境(即調用此shell的當前shell)。

7.1.3     例如:source env.sh

7.2          export

7.2.1     在bash下,使用export建立環境變量后,會影響到子shell腳本和當前shell的環境變量

7.3          unset

7.3.1     刪除環境變量

7.3.2     i.e.

#export newval=1

#echo $newval

1

#unset newval

#echo $newval

    (ß此處為空行,newval已經被刪除)

7.4          let

7.4.1     在bash中只用此命令可以建立一個臨時的變量,此變量不會影響到子shell

 

8            邏輯判斷

8.1          if

8.1.1     單格式與嵌套

 

if 條件表達式  
then #當條件為真時執行以下語句  
命令列表  
else #為假時執行以下語句  
命令列表  
fi

 

if 語句也可以嵌套使用  

if 條件表達式1  
then  
if 條件表達式2  
then  
命令列表  
else  
if 條件表達式3  
then  
命令列表  
else  
命令列表  
fi  
fi  
else  
命令列表  
fi 

 

8.1.2     多分支格式

 

if test -f "$1"  
then  
lpr $1  
elif test -d "$1" #elif 同else if  
then  
(cd $1;lpr $1)  
else  
echo "$1不是文件或目錄"  
fi

 

8.2          case

8.2.1     格式

case $newval in

1)          #這里是可能值1

echo 1

;;      #表示第一個分支結束

2)           #這里是可能值 2

echo 2

;;      #第二個分支結束

*)      #表示其他可能值,必須在最后,否則他后面的語句無法執行

echo unkown

esac    #case 語句結束

8.2.2      

8.3          while /until

8.3.1     格式

while 表達式

do

命令列表

done

 

8.3.2     例如:

Sum=0  
i=0  
while true #true是系統的關鍵詞 表示真  
do  
i=`expr $i + 1`  
Sum=`expr $Sum + $i`  
if [ $i = "100" ]  
then  
break;  
fi  
done  
echo $i $Sum  
最后這個程序顯示的是 100 5050 

 

下面將這個程序再改動一下  


Sum=0  
i=0  
while [ $i != "100" ]  
do  
i=`expr $i + 1`  
Sum=`expr $Sum + $i`  
done  
echo $i $Sum  

改動后的程序運算結果和上面是一樣 但程序比上面的要簡練  

在這個循環中還可以以until做為測試條件 它正好與while測試的條件相反,也就是當條件為假時將繼續執行循環體內的語句,否則就退出循環體,下面還用這個例子.  


Sum=0  
i=0  
until [ $i = "100" ]  
do  
i=`expr $i + 1`  
Sum=`expr $Sum + $i`  
done  
echo $i $Sum  
當i不等於100時循環 就是當條件為假時循環,否則就退出,而第一個例子是當i不等於100  
時循環,也就是測試條件為真時循環. 

 

8.4          for

8.4.1     枚舉用法

8.4.1.1    格式

 

 

for 變量 in 名字列表  
do  
命令列表  
done 

 

8.4.1.2    格式

for n in {1..10}

do

echo $n

done

 

for letter in a b c d e;

do

echo $letter

done

 

 

8.4.2     文件用法

 

8.4.2.1    格式

for file in *

do

       echo $file

done

 

8.4.2.2    例子

 

for File in a1 a2 a3 a4 a5  
do  
diff aa/$File bb/$File  
done 

 

 

8.4.3     累加格式

for (( i=1;$i<10;i++))

do

echo $i

done

 

for(( i=1;$i<10;i=$[$i+1’ ])

do

echo $i

done

8.4.4      

8.5          其他循環控制語句

break 命令不執行當前循環體內break下面的語句從當前循環退出.  
continue 命令是程序在本循體內忽略下面的語句,從循環頭開始執行.

 

8.6          邏輯判斷的表達

 

一、判斷文件的屬性  

格式:-操作符 filename  
-e 文件存在返回1, 否則返回0  
-r 文件可讀返回1,否則返回0  
-w 文件可寫返回1,否則返回0  
-x 文件可執行返回1,否則返回0  
-o 文件屬於用戶本人返回1, 否則返回0  
-z 文件長度為0返回1, 否則返回0.  
-f 文件為普通文件返回1, 否則返回0  
-d 文件為目錄文件時返回1, 否則返回0  

二、測試字符串  
字符串1 = 字符串2 當兩個字串相等時為真  
字符串1 != 字符串2 當兩個字串不等時為真  
-n 字符串      當字符串的長度大於0時為真  
-z 字符串      當字符串的長度為0時為真  
字符串       當串字符串為非空時為真  

三、測試兩個整數關系  
數字1 -eq 數字2     兩數相等為真  
數字1 -ne 數字2     兩數不等為真  
數字1 -gt 數字2     數字1大於數字2為真  
數字1 -ge 數字2     數字1大於等於數字2為真  
數字1 -lt 數字2     數字1小於數字2為真  
數字1 -le 數字2     數字1小於等於數字2為真  

四、邏輯測試  
-a         與  
-o        或  
!        非 

 

9           shell中的表達式

9.1          shell 輸出重定向

9.1.1     管道  |

就管道符前的命令的輸出作為管道符后的命令的輸入。

 

ls | grep ‘.txt’

將ls的輸出作為grep 的輸入。 grep從輸入中找出所有包含.txt的行。

 

9.1.2     輸出  >

將右尖括號前的命令的輸入重定向到尖括號后的文件中。

 

例如:

ls *.sh > list.txt

將當前目錄下所有末尾名為sh的文件的列表寫入到list.txt

 

9.1.3     輸入 <

將左箭頭后面的文件作為左箭頭前的命令的輸入。

例如:

grep “a” < test.sh

將test.sh中找到所有包含a的行

 

9.1.4     錯誤輸出重定向

默認bash有3個標准輸入輸出設備。

0 標准輸入

1 標准輸出

2錯誤輸出

 

如果執行腳本的時候發生錯誤,會輸出到2上。

要想就將錯誤的輸出也輸出在標准輸出上,需要重定向。

例如:

./test.sh > a.log 2>&1

后面2>&1就是將標准錯誤的輸出重定向到標准輸出上。

 

9.2          tee

9.2.1     將此命令的輸入分叉,一支輸出到屏幕一支可以重定向到其他位置。

例如: ./test.sh | tee >a.txt 2>&1

運行test.sh,通過tee輸出到a.txt,同時屏幕上可以看到輸出。並且將錯誤輸出重定向到標准輸出( 2>&1 )

9.3          cpio

9.3.1     文件或目錄打包

9.3.1.1    含子目錄打包

  find . -name '*.sh' | cpio -o > shell.cpio

  將當前目錄及其子目錄下的sh文件打包成一個文件庫為shell.cpio。 

9.3.1.2    不含子目錄的打包

ls *.sh | cpio -o > shell.cpio

  將當前目錄下的sh文件(不含子目錄)打包成一個文件庫為shell.cpio。 

9.3.2      壓縮

文件打包完成后,即可用Unix中的compress命令(/usr/bin下)壓縮打包文件。對一般的文本文件,壓縮率較高,可達81%。

例如:compress shell.cpio則將文件庫壓縮為shell.cpio.Z(自動添加.Z並刪除shell.cpio )。 

9.3.3      解壓

uncompress shell.cpio.Z則自動還原為shell.cpio。 

9.3.4      解包展開

將按原目錄結構解包展開到當前所在目錄下。若以相對路徑打包的,當解包展開時,也是以相對路徑存放展開的文件數據;若以絕對路徑打包的,當解包展開時,也是以絕對路徑存放展開的文件數據。因此注意若為相對路徑,應先進入相應的目錄下再展開。 

 

 cd /u1

 cpio –id < shell.cpio 解壓到當期目錄。 

 cpio –iud < shell.cpio則文件若存在將被覆蓋,即強制覆蓋。 

 cpio –id < shell.cpio env.sh 解壓縮env.sh

9.3.5      顯示包內的文件

  cpio –it < shell.cpio  

 

9.4          exec

9.4.1     將此命令后的參數作為命令在當前的shell中執行,當前的shell或者腳本不在執行。

例如: exec ls

當前進程替換為ls,執行結束后就退出了。

例如:在a.sh 中包含

exec b.sh 則當a.sh 執行到此句后,被b.sh替換,a.sh中此句后的語句不會再被執行。

 

9.5          fork

9.5.1     將此命令的參數,新建一個進程來執行

 

例如:在a.sh 中包含

fork b.sh 則當a.sh 執行到此句后,被b.sh替換,a.sh中此句后的語句繼續執行。b.sh在新的進程中同時執行。

 

9.6          expr

9.6.1     expr argument operator argument

9.6.2     一般用於整數的運算。 例如:

#set newval=1

#echo $newval

1

#set newval=`expr $newval + 1`

#echo $newval

2

#set newval=$newval+1

#echo $newval

2+1

 

9.7          test

9.7.1     測試,通常用在需要判斷的語句后面,例如:if,while,等等。

9.7.2     很多時候可以和中括號[]互換,我不知道區別是什么。

9.7.3     例子:

i=1

if test”$ i” == “1”

then

echo true

else

echo false

fi

 

9.8          exit

退出當前的shell,執行結果可以在shell中用$?查看

例如:exit 2

9.9          read

從標准輸入讀取數據。

例: 
$ read var1 var2 var3 
Hello my friends 
$ echo $var1 $var2 $var3 
Hello my friends 
$ echo $var1 
Hello

 

9.10       shift

9.10.1 每次調用的時候,將參數列表中的第一個參數去掉。這樣可以循環得到第一個參數。

9.10.2 例子

#cat t.sh

sum=0

until [ $# -eq 0 ]

do

echo $*

sum=`expr $sum + $1`

shift

done

echo result is: $sum

 

#./t.sh 1 2 3

1 2 3

2 3

3

 

 

10       附件一:例子腳本

10.1        腳本1

 

10.2        

11       附件二:Linux 易被遺漏的命令解析

11.1       grep

11.1.1 grep ‘string’ filename

11.1.1.1e.i.: grep ‘list’ mytxt.txt 在mytxt.txt中尋找包含list字符串的所有行

11.1.2 “-v” : 相反的。 即不包含字符串。

11.1.2.1e.i.: grep –v ‘list’ mytxt.txt

11.1.3 cat mytxt | grep ‘list’

將cat mytxt作為源, 從中查找包含list字符串的行

11.2       find

11.2.1 -atime n : 指查找系統中最后n*24小時訪問的文件;

11.2.2 -ctime n : 指查找系統中最后n*24小時被改變狀態的文件;

11.2.3 -mtime n : 指查找系統中最后n*24小時被修改的文件。

11.2.4 在當前目錄下(包含子目錄),查找所有txt文件並找出含有字符串"bin"的行
find ./ -name "*.txt" -exec grep "bin" {} \;

11.2.5 在當前目錄下(包含子目錄),刪除所有txt文件
find ./ -name "*.txt" -exec rm {} \;

 

11.3       du

11.3.1 顯示文件的大小

11.3.2 i.e.

#du *.txt

1230   myfile1.txt

456    myfile2.txt

 

11.4       awk

11.4.1 提取輸入中的某個參數

11.4.2 i.e. 提取輸入中每一行的第一個參數

#echo `du *.txt | awk ‘{print $1}’`

1230 456

提取子字符串

#echo `du *.bin | awk '{print substr($1,2,3)}'`

 

11.5       前后台運行

11.5.1 將某個程序在后台啟動起來,只需要在命令的最后加上 & 符號。

例如: ./test.sh &

 

11.5.2 將當前正在運行的程序切換到后台

11.5.2.1當按下^z的時候,當前的應用程序就會切換到后台,但是此時的狀態是停止的狀態。

11.5.2.2使用jobs命令可以看到當前在后台運行的程序的列表。

例如:jobs

[1]+ stopped top

[2]+stopped find | grep *.txt > a.log

 

11.5.2.3使用bg命令可以將某個后台程序繼續運行。

#bg %2

#jobs

[1]+ stopped top

[2]+ Running find | grep *.txt > a.log

 

11.5.3 將后台運行的程序切回到前台

#fg %2

將find 命令切回到前台

11.6       shell的執行選項

 

-n 測試shell script語法結構,只讀取shell script但不執行 
-x 進入跟蹤方式,顯示所執行的每一條命令,用於調度 
-a Tag all variables for export 
-c "string" 從strings中讀取命令 
-e 非交互方式 
-f 關閉shell文件名產生功能 
-h locate and remember functions as defind 
-i 交互方式 
-k 從環境變量中讀取命令的參數 
-r 限制方式 
-s 從標准輸入讀取命令 
-t 執行命令后退出(shell exits) 
-u 在替換中如使用未定義變量為錯誤 
-v verbose,顯示shell輸入行

 

11.7       alias

建立別名

alias dir ls

11.8        xargs

執行本命令的第一個參數,並將xargs的輸入作為被執行命令的參數

例如:

find . -name '*.c' | xargs cat

將本目錄及其子目錄下所有的C文件使用cat命令顯示其內容。

 

12       附件三:Bash中影響環境變量的命令

 

Shell有若干以變量為工作對象的命令,其中有些命令似乎重復了。例如,可以用declare、export和typeset命令來創建全局(或轉出)的變量。typeset命令是declare的同義詞。

 

Declare 命令

 

語法:

declare [options] [name [= value]]

 

摘要:

用於顯示或設置變量。

declare命令使用四個選項:

-f   只顯示函數名

-r   創建只讀變量。只讀變量不能被賦予新值或取消設置,除非使用declare或者typeset命令

-x   創建轉出(exported)變量

-i   創建整數變量。如果我們想給一個整數變量賦予文本值,實際上是賦予0使用+ 代替-,可以顛倒選項的含義。

 

如果沒有使用參數,則declare顯示當前已定義變量和函數的列表。讓我們關注一下-r選項:

 

$ declare  –r  title=" paradise Lost"

$ title = " Xenogenesis"

bash: title: read-only variable

$ declare title= " Xenogenesis"

$ echo $title

Xecogenesis

$ typeset title = " The Longing Ring”

$ echo $title

The Longing Ring

 

這個示例表明,只有declare或typeset命令可以修改只讀變量的值。

 

 

 

export命令

 

語法:

 export [options] [name [= value]]

摘要:

用於創建傳給子Shell的變量。

export命令使用四個選項:

--   表明選項結束。所有后續參數都是實參

-f   表明在“名-值”對中的名字是函數名

-n   把全局變量轉換成局部變量。換句話說,命名的變量不再傳給子Shell

-p   顯示全局變量列表

 

如果沒有用參數,則假定是一個-p參數,並且顯示出全局變量的列表:

 

$ export

declare –x ENV = "/home/medined/ . bashrc"

declare –x HISTFILESIZE = "1000"

declare –xi numPages = "314"

declare –xr title = "The Longing Ring"

declare –xri numChapters = "32"

 

這種顯示的一個有趣的特性是,它告訴我們哪些變量只能是整數、是只讀的,或者二者皆可。

 

let命令

 

語法:

let expression

摘要:

用於求整數表達式的值。

 

let命令計算整數表達式的值。它通常用來增加計數器變量的值,如例5-9所示。

 

例5-9 let——使用let命令

# ! /bin/bash

count=1

for element in $@

do

   echo " $element is element $count"

   let count+=1

done

 

下面是這個腳本運行結果示例:

$ chmod + x let

$ . /let one two three

one is element 1

two is element 2

three is element 3

 

注意:如果我們習慣在表達式中使用空格,那么要用雙引號把表達式括起來,如:

let "count + =1"

否則會導致語句錯誤。

 

local 命令

 

語法:

       local [name [= value]]

摘要:

       用於創建不能傳給子Shell的變量。這個命令僅在過程內部有效。

 

簡單說來,local命令創建的變量不能被子Shell存取。因此,只能在函數內部使用local命令。我們可以在命令行或腳本中使用“變量=值”這種形式的賦值命令。如果使用local時不帶實參,那么當前已定義的局部變量列表就送往標准輸出顯示。

 

readonly命令

 

語法:

       readonly [options] [name[ = value]]

摘要:

用於顯示或者設置只讀變量。

Readonly命令使用兩個選項:

--    表明選項結束。所有后續參數都是實參

-f    創建只讀函數

 

如果沒有用參數,則readonly顯示當前已定義的只讀變量和函數的列表。

 

set命令

 

語法:

       set [--abefhkmnptuvxidCHP] [-o option] [name [= value]]

摘要:

用於設置或者重置各種Shell選項。

 

set 命令可實現很多不同的功能——並非其中所有的功能都與變量有關。由於本節的其他命令重復了通過set命令可用的那些變量選項,所以這里對set命令不做詳細說明。

 

shift命令

 

語法

shift [n]

摘要:

用於移動位置變量。

 

shift命令調整位置變量,使$3的值賦予$2,而$2的值賦予$1。當執行shift命令時,這種波動作用影響到所定義的各個位置變量。往往使用shift命令來檢查過程參數的特定值——如為選項設置標志變量時。

 

typeset命令

 

語法:

typeset [options] [name [= value]]

摘要:

用於顯示或者設置變量。

 

typeset 命令是declare命令的同義詞。

 

 

unset命令

 

語法:

unset [options] name [name …]

摘要:

用於取消變量定義。

unset命令使用兩個選項:

--  表明選項結束,所有后續參數都是實參

-f  創建只讀函數

 

unset命令從Shell環境中刪除指定的變量和函數。注意,不能取消對PATH、IFS、PPID、PS1、PS2、UID和EUID的設置。如果我們取消RANDOM、SECONDS、LINENO或HISTCMD等變量的設置,它們就失去特有屬性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM