** : 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...