本文總結(jié)了Linux中的$符號(hào)的各種用法
用法一:
顯示腳本參數(shù)(?井仰、
@第献、
!)(本質(zhì)上屬于變量替換)
{10}.
$?:是上一指令的返回值,成功是0科侈,不成功是1载佳。一般來(lái)說(shuō),UNIX(linux) 系統(tǒng)的進(jìn)程以執(zhí)行系統(tǒng)調(diào)用exit() 來(lái)結(jié)束的臀栈。這個(gè)回傳值就是status值蔫慧。回傳給父進(jìn)程权薯,用來(lái)檢查子進(jìn)程的執(zhí)行狀態(tài)藕漱。一般指令程序倘若執(zhí)行成功,其回傳值為 0崭闲;失敗為 1。
$*:所有腳本參數(shù)的內(nèi)容:就是調(diào)用調(diào)用本bash shell的參數(shù)威蕉。
*”返回的是一個(gè)字符串,字符串中存在多外空格韧涨。 “$@”返回多個(gè)字符串牍戚。
$#:返回所有腳本參數(shù)的個(gè)數(shù)。
$$ :Shell本身的PID(ProcessID)虑粥,即當(dāng)前進(jìn)程的PID如孝。
$! :Shell最后運(yùn)行的后臺(tái)Process的PID
$- :使用Set命令設(shè)定的Flag一覽
示例:
touch variable
vi variable
腳本內(nèi)容如下:
!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
保存退出
賦予腳本執(zhí)行權(quán)限
chmod +x variable
執(zhí)行腳本
./variable aa bb
number:2
scname:./variable
first: aa
second:bb
argume:aa bb
通過(guò)顯示結(jié)果可以看到:
$# 是傳給腳本的參數(shù)個(gè)數(shù)
$0 是腳本本身的名字
$1是傳遞給該shell腳本的第一個(gè)參數(shù)
$2是傳遞給該shell腳本的第二個(gè)參數(shù)
$@ 是傳給腳本的所有參數(shù)的列表
用法二:
獲取變量與環(huán)境變量的值
如:path=2,則echo {path}顯示的就是path的值娩贷。
在linux及unix的sh中第晰,以PATH表示的是系統(tǒng)的命令搜索路徑茁瘦,和windows的%path%是一樣的$HOME則表示是用戶的主目錄品抽,也就是用戶登錄后工作目錄
示例:echo $PATH.
用法三:
shell中( )甜熔、``與${ }的區(qū)別
說(shuō)明:
${ }這種形式其實(shí)與用法一和二是一樣的圆恤,屬于變量替換的范疇,只不過(guò)在變量替換中可以加上大括號(hào)腔稀,也可以不加大括號(hào)盆昙。
簡(jiǎn)而言之:[ ]焊虏,
{ }屬于變量替換
(1)$( )與``(反引號(hào)):返回括號(hào)中命令的結(jié)果
在bash中,$( )與` `(反引號(hào))都是用來(lái)作命令替換的炕淮,執(zhí)行括號(hào)或者反引號(hào)中的命令拆火。
命令替換與變量替換差不多,都是用來(lái)重組命令行的涂圆,先完成引號(hào)里的命令行们镜,然后將其結(jié)果替換出來(lái),再重組成新的命令行
示例:命令:(date "+%Y-%m-%d")润歉,顯示:today is 2014-07-01
注:在操作上模狭,這兩者都是達(dá)到相應(yīng)的效果,但是建議使用$( )踩衩,理由如下:
1)``很容易與''搞混亂嚼鹉,尤其對(duì)初學(xué)者來(lái)說(shuō)。
2)在多層次的復(fù)合替換中驱富,``必須要額外的跳脫處理(反斜線)锚赤,而$( )比較直觀。
最后褐鸥,$( )的弊端是线脚,并不是所有的類unix系統(tǒng)都支持這種方式,但反引號(hào)是肯定支持的叫榕。
示例:
1# 將cmd1執(zhí)行結(jié)果作為cmd2參數(shù)浑侥,再將cmd2結(jié)果作為cmd3的參數(shù)
cmd3 $(cmd2 $(cmd1))
2 # 如果是用反引號(hào),直接引用是不行的晰绎,還需要作跳脫處理
cmd3 `cmd2 \`cmd1\``
(2)${ }變量替換
一般情況下寓落,{var}是沒(méi)有區(qū)別的,但是用${ }會(huì)比較精確的界定變量名稱的范圍
示例:
取路徑荞下、文件名伶选、后綴
先賦值一個(gè)變量為一個(gè)路徑史飞,如下:
file=/dir1/dir2/dir3/my.file.txt
記憶方法如下:
是去掉左邊(在鍵盤上 # 在 $ 之左邊)
% 是去掉右邊(在鍵盤上 % 在 $ 之右邊)
單一符號(hào)是最小匹配;兩個(gè)符號(hào)是最大匹配
*是用來(lái)匹配不要的字符,也就是想要去掉的那部分
還有指定字符分隔號(hào)考蕾,與*配合祸憋,決定取哪部分
————————————————
版權(quán)聲明:本文為CSDN博主「木木統(tǒng)」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議肖卧,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明蚯窥。
原文鏈接:https://blog.csdn.net/weixin_37766087/article/details/99974385