Shell 指令碼中 符號的多種用法

2021-09-25 06:47:34 字數 3176 閱讀 1877

** : jacktian 杰哥的it之旅

通常情況下,在工作中用的最多的有如下幾項:

$0:shell 的命令本身

$1 到 $9:表示 shell 的第幾個引數

$? :顯示最後命令的執**況

$#:傳遞到指令碼的引數個數

$$:指令碼執行的當前程序 id 號

$*:以乙個單字串顯示所有向指令碼傳遞的引數

$!:後台執行的最後乙個程序的 id 號

$-:顯示 shell 使用的當前選項

…今天將通過以上幾種選項並做進一步的操作案例;

1、引用變數

引用變數時,使用 $ 符號直接來進行引用,以及包括迴圈變數;

[root@localhost ~]# x=1024

[root@localhost ~]# echo $x

1024

利用雙引號 " 將括起來的字串支援變數插值。

[root@localhost ~]# x=1024

[root@localhost ~]# echo "x = $x"

x = 1024

使用 $ 作為單詞邊界。

[root@localhost ~]# x=1024

[root@localhost ~]# echo "x = $xy"

x = 1024xy

使用 $ 獲取變數字串長度。

[root@localhost etc]# s=helloworld

[root@localhost etc]# echo "s.length = $"

s.length = 10

2、引用指令碼或函式引數基於引用指令碼的方式,1 表示 shell 指令碼檔名,n 從 2 開始表示第 n 個引數,第 2 個引數是 $2;

[root@localhost ~]# echo 'echo $1 $2 $3' > ping.sh

[root@localhost ~]# cat ping.sh

echo $1 $2 $3

[root@localhost ~]# sh ping.sh 1 2 3

1 2 3

單引號 『』 括起來的字串不會進行插值,並使用 $# 獲取指令碼或函式引數的個數;

[root@localhost ~]# echo 'echo $#' > ping.sh

[root@localhost ~]# sh ping.sh 1 2 3

3

3、上條命令的返回值使用 $? 上條命令的返回值。

0:表示沒有錯誤,其他任何數值:表示有錯誤。

[root@localhost ~]# true 1024

[root@localhost ~]# echo $?

0[root@localhost ~]# false 2048

[root@localhost ~]# echo $?

1

4、執行並獲取命令輸出使用 $() 執行並獲取命令輸出賦值給變數,等於雙引號的功能。

[root@localhost ~]# echo `date`

2023年 06月 05日 星期日 12:39:08 cst

[root@localhost ~]# echo $(date)

2023年 06月 05日 星期日 12:39:34 cst

5、表示式求值使用 對

表示式進

行求值,

與命令e

xpr不

同的是:

[ ] 對表示式進行求值,與命令 expr 不同的是:

對表示式

進行求值

,與命令

expr

不同的是

:[ ] 用於插值,則 expr 用於將值進行輸出

[root@localhost ~]# echo $[1024 + 2048]

3072

[root@localhost ~]# expr 1024 + 2048

3072

[root@localhost ~]# a=1024

[root@localhost ~]# b=2048

[root@localhost ~]# echo $[ a + b ]

3072

6、獲取當前程序 id

使用 $$ 來進行獲取當前程序的 id 號。

[root@localhost ~]# echo $$

55580

7、後台執行的最後乙個程序 id使用 $! 來進行獲取後台執行的最後乙個程序 id。

在命令結尾使用 & 可建立後台程序。

執行命令 kill $! 然後在輸入 echo $! 將終止該 ping.sh 指令碼。

[root@localhost ~]# tail -f /root/ping.sh &

[2] 55848

[root@localhost ~]# echo $!

55848

[root@localhost ~]# kill $!

[root@localhost ~]# echo $!

55848

[2]+ 已終止 tail -f /root/ping.sh

8、獲取 shell 選項

使用 $- 來進行獲取當前 shell 的選項。

[root@localhost ~]# echo $-

himbh

shell指令碼符號小結

大多數的shell指令碼都是以 bin sh開頭的,是對該shell指令碼的宣告,說明這個shell指令碼的型別及執行路徑。1.在shell指令碼中表示的注釋,但是 卻不是。2.表示的當前賬戶的home目錄。3.表示連續命令,我們在c語言程式設計時就經常用到。4.單引號表示單一字元。5.雙引號表示單...

shell指令碼符號篇

hell執行指令碼 bin bash echo 這是乙個shell指令碼 shell指令碼中用 表示注釋,如果 位於第一 開頭 並且是則例外,它表 該指令碼使 後 指定的直譯器 bin sh解釋執 第一種執行方式 chmod x script.sh shell會 fork 乙個子程序並調 用 exe...

shell指令碼中if語句的用法

分享下shell中if語句的用法。一,if語句 1.if與 之間要有空格 2.與判斷條件之間也必須有空格 3.與 之間不能有空格 二,字串 判斷 1.if str1 str2 then fi 當兩個字串相同時返回真 2.if str1 str2 then fi 當兩個字串不相等時返回真 3.if n...