濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > linux中$符號(hào)的基礎(chǔ)用法總結(jié)

linux中$符號(hào)的基礎(chǔ)用法總結(jié)

熱門(mén)標(biāo)簽:長(zhǎng)春電銷外呼系統(tǒng)代理商 大連電銷外呼系統(tǒng)運(yùn)營(yíng)商 400電話干嘛怎么申請(qǐng)信用卡 代理外呼系統(tǒng)創(chuàng)業(yè) 百度地圖標(biāo)注尺寸無(wú)法顯示 400電話申請(qǐng)知乎 外呼系統(tǒng)虛擬號(hào)碼 泰州智能外呼系統(tǒng)排名 接電話機(jī)器人罵人

linux使用版本: CentOS 7

[root@azfdbdfsdf230lqdg1ba91 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@azfdbdfsdf230lqdg1ba91 ~]# uname -a
Linux azfdbdfsdf230lqdg1ba91 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@azfdbdfsdf230lqdg1ba91 ~]#

$符號(hào)草集

目標(biāo)

$符號(hào)在linux系統(tǒng)的有著很多很重要的作用,特別是在編寫(xiě)bash腳本的時(shí)候,隨處可見(jiàn)$的身影。由于他的千變?nèi)f化,多種多樣,使對(duì)他的掌握和使用,尤其是記憶帶來(lái)了挑戰(zhàn),所以,現(xiàn)在,我們來(lái)一起將它的用法做一次匯總,形成草集。掌握他們不會(huì)讓你工資大漲,因?yàn)槊嬖嚥粫?huì)問(wèn)到,但是會(huì)提高你的工作效率,擴(kuò)展你的視野

目前,我所知道的$用法有$、"$"、$0 $1 $n、$#、$@ $*、$?、$()、${}、${#}、$[]、$-、$!、$$。額外!$,!!,依次詳說(shuō)

$ 獲取變量值

$可獲取變量的值

[root@izbp10lqlgy2g31s41bt94z ~]# a=1
[root@izbp10lqlgy2g31s41bt94z ~]# echo $a
1

"$" 獲取變量值時(shí)最好使用"括起來(lái)

為什么有這個(gè)建議呢,看實(shí)例

[root@izbp10lqlgy2g31s41bt94z ~]# echo get value of a = $a
get value of a = 1
[root@izbp10lqlgy2g31s41bt94z ~]# echo "get value of a = $a"
get value of a = 1

可以看到,有無(wú)"雙引號(hào)括起來(lái)似乎效果是一樣的。別早下結(jié)論,往下看

[root@izbp10lqlgy2g31s41bt94z ~]# a="i am skyler"
[root@izbp10lqlgy2g31s41bt94z ~]# [ $a == "i am skyler" ]
-bash: [: 參數(shù)太多

這里解析下[],[]是條件判斷符號(hào),相當(dāng)于test命令。他的意思是判斷a變量的值是否等于"i am skyler"。
那么為什么會(huì)報(bào)錯(cuò)呢,因?yàn)閇 $a == "i am skyler"]這種寫(xiě)法變量解析后成為[ i am skyler == "i am skyler" ],很明顯,這個(gè)判斷式無(wú)法判斷等號(hào)兩邊的字符串,我們想要的是[ "i am skyler" == "i am skyler" ]的比較。所以平時(shí)我們?cè)谑莕ame"

[root@izbp10lqlgy2g31s41bt94z ~]# [ "$a" == "i am skyler" ]
[root@izbp10lqlgy2g31s41bt94z ~]# echo $?
0

使用雙引號(hào)后就可以了,這里提前用了下$?,他的意思是判斷前一個(gè)命令執(zhí)行結(jié)果是否正確。輸出的結(jié)果中,0表示執(zhí)行成功,非零值表示出錯(cuò)

${}用于區(qū)分變量的邊界,明確告訴程序要取哪個(gè)變量的值

如下實(shí)例,不加{}程序無(wú)法判斷ab $abc哪個(gè)是變量,無(wú)法解析

[root@izbp10lqlgy2g31s41bt94z ~]# echo "get value of a = $abc"
get value of a =
[root@izbp10lqlgy2g31s41bt94z ~]# echo "get value of a = ${a}bc"
get value of a = 1bc
[root@izbp10lqlgy2g31s41bt94z ~]#

${#}獲取變量值的長(zhǎng)度

[root@izbp10lqlgy2g31s41bt94z ~]# echo "get length of a = ${#a}"
get length of a = 1
[root@izbp10lqlgy2g31s41bt94z ~]# a=11111
[root@izbp10lqlgy2g31s41bt94z ~]# echo "get length of a = ${#a}"
get length of a = 5
[root@izbp10lqlgy2g31s41bt94z ~]# a=skyler
[root@izbp10lqlgy2g31s41bt94z ~]# echo "get length of a = ${#a}"
get length of a = 6
[root@izbp10lqlgy2g31s41bt94z ~]#

$0 $1 $n 獲取文件名稱和參數(shù)值,一般在bash腳本中較多

$0 表示shell腳本文件名;從1開(kāi)始表示第幾個(gè)參數(shù),1表示第一個(gè)參數(shù)。這里我們創(chuàng)建一個(gè)test.sh可執(zhí)行文件

創(chuàng)建一個(gè)test.sh文件并填充代碼
[root@izbp10lqlgy2g31s41bt94z ~]# echo 'echo $0 $1 $2' > test.sh
[root@izbp10lqlgy2g31s41bt94z ~]# cat test.sh
echo $0 $1 $2

執(zhí)行test.sh 并傳入變量
[root@izbp10lqlgy2g31s41bt94z ~]# sh test.sh i am skyler
test.sh i am

可以看到,三個(gè)參數(shù)中前兩個(gè)打印出來(lái)了,因?yàn)槲覀儧](méi)有聲明$3,所有打印出了文件名稱和前兩個(gè)參數(shù)

$# 獲取參數(shù)數(shù)量

[root@izbp10lqlgy2g31s41bt94z ~]# echo 'echo $# $0 $1' > test.sh
[root@izbp10lqlgy2g31s41bt94z ~]# cat test.sh
echo $# $0 $1
[root@izbp10lqlgy2g31s41bt94z ~]# sh test.sh I am a shuashua
4 test.sh I

$@ $* 數(shù)組的形式引用參數(shù)列表

它們的區(qū)別在于使用雙引號(hào)括起來(lái)用時(shí),假設(shè)傳入的參數(shù)為1 2 3,那么"*的值為”1 2 3”一個(gè)變量

test.sh
echo '$@的數(shù)組參數(shù)格式'
for x in "$@"
do
 echo + $x
done
echo '$*的數(shù)組參數(shù)格式'
for x in "$*"
do
 echo + $x
done

root@izbp10lqlgy2g31s41bt94z:~# sh test.sh 1 2 3
$@的數(shù)組參數(shù)格式
+ 1
+ 2
+ 3
$*的數(shù)組參數(shù)格式
+ 1 2 3

$? 判斷上一個(gè)命令執(zhí)行是否成功

執(zhí)行成功值時(shí)0,失敗是非0

[root@izbp10lqlgy2g31s41bt94z ~]# ll
總用量 172
-rw-r--r-- 1 root root 49392 2月 25 2019 hs_err_pid24203.log
-rw-r--r-- 1 root root 49425 2月 13 2019 hs_err_pid25726.log
[root@izbp10lqlgy2g31s41bt94z ~]# echo $?
0
[root@izbp10lqlgy2g31s41bt94z ~]# ca ff
-bash: ca: 未找到命令
[root@izbp10lqlgy2g31s41bt94z ~]# echo $?
127

$() 等同于使用雙引號(hào)的作用


$[] 表達(dá)式計(jì)算

此時(shí)的[]不是用于判斷式的場(chǎng)景,[]作為判斷式一般用于bash腳步中if while等條件語(yǔ)句

[root@izbp10lqlgy2g31s41bt94z ~]# echo $[5 + 5]
10

$- 顯示shell所使用的當(dāng)前選項(xiàng)

[root@izbp10lqlgy2g31s41bt94z ~]# echo $-
himBH

解釋:himBH每一個(gè)字符是一個(gè)shell的選項(xiàng),詳情man bash然后搜索 -h -B 等。詳情參考:http://kodango.com/explain-shell-default-options

$! 獲取后臺(tái)運(yùn)行最后一個(gè)進(jìn)程的pid,更多應(yīng)用在bash腳本

[root@izbp10lqlgy2g31s41bt94z ~]# cat test.sh &
[1] 362
[root@izbp10lqlgy2g31s41bt94z ~]# echo $# $0 $1
^C
[1]+ 完成     cat test.sh
[root@izbp10lqlgy2g31s41bt94z ~]# echo $!
362

!$ 將上一條命令的參數(shù)傳遞給下一條命令的參數(shù),平時(shí)用于更方便,更多應(yīng)用在bash腳本

[root@izbp10lqlgy2g31s41bt94z ~]# cd /Users/skyler/project/test
[root@izbp10lqlgy2g31s41bt94z ~]# ll !$
[root@izbp10lqlgy2g31s41bt94z ~]# ll /Users/skyler/project/test
362

!! 將上一條命令輸出 ,平時(shí)用于更方便,更多應(yīng)用在bash腳本

[root@izbp10lqlgy2g31s41bt94z ~]# !!
[root@izbp10lqlgy2g31s41bt94z ~]# ll /Users/skyler/project/test

$$ 獲取當(dāng)前進(jìn)程pid

[root@izbp10lqlgy2g31s41bt94z ~]# echo $$
31268
[root@izbp10lqlgy2g31s41bt94z ~]# ps -ef|grep 31268
root  31268 31266 0 08:10 pts/0 00:00:00 -bash

當(dāng)前的進(jìn)程是bash,pid是31268

平日多加練習(xí),用時(shí)隨心索取

段進(jìn)行分頁(yè)拉取也是可以達(dá)到效果的,具體還是要由業(yè)務(wù)場(chǎng)景來(lái)定。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

標(biāo)簽:長(zhǎng)治 臺(tái)灣 清遠(yuǎn) 中衛(wèi) 雅安 安陽(yáng) 興安盟 大慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux中$符號(hào)的基礎(chǔ)用法總結(jié)》,本文關(guān)鍵詞  linux,中,符,號(hào)的,基礎(chǔ),用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《linux中$符號(hào)的基礎(chǔ)用法總結(jié)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于linux中$符號(hào)的基礎(chǔ)用法總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    台北县| 铜鼓县| 新平| 嘉兴市| 台州市| 高淳县| 缙云县| 斗六市| 永宁县| 天水市| 饶平县| 淳安县| 东源县| 松原市| 寻甸| 尤溪县| 荥经县| 仪征市| 岳阳县| 德格县| 牟定县| 泸水县| 五家渠市| 察隅县| 黄冈市| 乾安县| 亚东县| 衡阳县| 台州市| 酒泉市| 沈丘县| 吴堡县| 兴宁市| 东城区| 利津县| 吴旗县| 青田县| 台南市| 浑源县| 马鞍山市| 蕲春县|