日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
linux中$符號的基礎用法總結

linux使用版本: CentOS 7

成都創(chuàng)新互聯公司不只是一家網站建設的網絡公司;我們對營銷、技術、服務都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務!我們經歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關注我們的網站制作、成都網站設計質量和服務品質,在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術創(chuàng)新,服務升級,滿足企業(yè)一站式成都全網營銷推廣需求,讓再小的高端網站設計也能產生價值!

[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 ~]#

$符號草集

目標

$符號在linux系統(tǒng)的有著很多很重要的作用,特別是在編寫bash腳本的時候,隨處可見$的身影。由于他的千變萬化,多種多樣,使對他的掌握和使用,尤其是記憶帶來了挑戰(zhàn),所以,現在,我們來一起將它的用法做一次匯總,形成草集。掌握他們不會讓你工資大漲,因為面試不會問到,但是會提高你的工作效率,擴展你的視野

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

$ 獲取變量值

$可獲取變量的值

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

“$” 獲取變量值時最好使用”括起來

為什么有這個建議呢,看實例

[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

可以看到,有無”雙引號括起來似乎效果是一樣的。別早下結論,往下看

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

這里解析下[],[]是條件判斷符號,相當于test命令。他的意思是判斷a變量的值是否等于”i am skyler”。
那么為什么會報錯呢,因為[ $a == “i am skyler”]這種寫法變量解析后成為[ i am skyler == “i am skyler” ],很明顯,這個判斷式無法判斷等號兩邊的字符串,我們想要的是[ “i am skyler” == “i am skyler” ]的比較。所以平時我們在是name”

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

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

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

如下實例,不加{}程序無法判斷ab $abc哪個是變量,無法解析

[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 ~]#

${#}獲取變量值的長度

[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 獲取文件名稱和參數值,一般在bash腳本中較多

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

創(chuàng)建一個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

可以看到,三個參數中前兩個打印出來了,因為我們沒有聲明$3,所有打印出了文件名稱和前兩個參數

$# 獲取參數數量

[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

$@ $* 數組的形式引用參數列表

它們的區(qū)別在于使用雙引號括起來用時,假設傳入的參數為1 2 3,那么”*的值為”1 2 3”一個變量

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

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

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

執(zhí)行成功值時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

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

$[] 表達式計算

此時的[]不是用于判斷式的場景,[]作為判斷式一般用于bash腳步中if while等條件語句

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

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

[root@izbp10lqlgy2g31s41bt94z ~]# echo $-
himBH

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

$! 獲取后臺運行最后一個進程的pid,更多應用在bash腳本

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

!$ 將上一條命令的參數傳遞給下一條命令的參數,平時用于更方便,更多應用在bash腳本

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

!! 將上一條命令輸出 ,平時用于更方便,更多應用在bash腳本

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

$$ 獲取當前進程pid

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

當前的進程是bash,pid是31268

平日多加練習,用時隨心索取

段進行分頁拉取也是可以達到效果的,具體還是要由業(yè)務場景來定。

總結

本篇文章到此結束,如果您有相關技術方面疑問可以聯系我們技術人員遠程解決,感謝大家支持本站!

成都網站設計制作選創(chuàng)新互聯,專業(yè)網站建設公司。
成都創(chuàng)新互聯10余年專注成都高端網站建設定制開發(fā)服務,為客戶提供專業(yè)的成都網站制作,成都網頁設計,成都網站設計服務;成都創(chuàng)新互聯服務內容包含成都網站建設,小程序開發(fā),營銷網站建設,網站改版,服務器托管租用等互聯網服務。


網站欄目:linux中$符號的基礎用法總結
網站地址:http://www.dlmjj.cn/article/ccsishh.html