最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年11月12日 08:34:55   作者:skyler  
這篇文章主要給大家介紹了關(guān)于linux中$符號的基礎(chǔ)用法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用linux系統(tǒng)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

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

$符號草集

目標(biāo)

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

目前,我所知道的$用法有$、"$"、$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

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

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

這里解析下[],[]是條件判斷符號,相當(dāng)于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í)行結(jié)果是否正確。輸出的結(jié)果中,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 獲取文件名稱和參數(shù)值,一般在bash腳本中較多

$0 表示shell腳本文件名;從1開始表示第幾個參數(shù),1表示第一個參數(shù)。這里我們創(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

可以看到,三個參數(shù)中前兩個打印出來了,因為我們沒有聲明$3,所有打印出了文件名稱和前兩個參數(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ū)別在于使用雙引號括起來用時,假設(shè)傳入的參數(shù)為1 2 3,那么"*的值為”1 2 3”一個變量

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

$? 判斷上一個命令執(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

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


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

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

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

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

[root@izbp10lqlgy2g31s41bt94z ~]# echo $-
himBH

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

$! 獲取后臺運(yùn)行最后一個進(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ù),平時用于更方便,更多應(yīng)用在bash腳本

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

!! 將上一條命令輸出 ,平時用于更方便,更多應(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í),用時隨心索取

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

總結(jié)

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

相關(guān)文章

  • Linux下自動刪除歸檔日志文件的方法

    Linux下自動刪除歸檔日志文件的方法

    這篇文章主要介紹了Linux下自動刪除歸檔日志文件的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2016-12-12
  • Centos系統(tǒng)中用mock構(gòu)建rpm的方法

    Centos系統(tǒng)中用mock構(gòu)建rpm的方法

    這篇文章主要給大家介紹了在Centos系統(tǒng)中用mock構(gòu)建rpm的方法,文中給出了詳細(xì)的命令代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒家價值,有需要的朋友們下面來一起看看吧。
    2016-12-12
  • 詳解Linux驅(qū)動中,probe函數(shù)何時被調(diào)用

    詳解Linux驅(qū)動中,probe函數(shù)何時被調(diào)用

    這篇文章主要介紹了詳解Linux驅(qū)動中,probe函數(shù)何時被調(diào)用 ,具有一定的參考價值,有興趣的同學(xué)可以了解一下。
    2016-12-12
  • 手把手教你在騰訊云上搭建hadoop3.x偽集群的方法

    手把手教你在騰訊云上搭建hadoop3.x偽集群的方法

    這篇文章主要介紹了手把手教你在騰訊云上搭建hadoop3.x偽集群的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Linux下SSH免密碼登錄配置詳解

    Linux下SSH免密碼登錄配置詳解

    這篇文章主要介紹了Linux下SSH免密碼登錄配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Apache 虛擬目錄和默認(rèn)首頁的設(shè)置

    Apache 虛擬目錄和默認(rèn)首頁的設(shè)置

    Apache虛擬目錄和默認(rèn)首頁的設(shè)置,用apache做服務(wù)器的朋友必須要懂的。
    2009-11-11
  • Ubuntu基礎(chǔ)設(shè)定:openssh-server的安裝和使用介紹

    Ubuntu基礎(chǔ)設(shè)定:openssh-server的安裝和使用介紹

    今天小編就為大家分享一篇關(guān)于Ubuntu基礎(chǔ)設(shè)定:openssh-server的安裝和使用介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 從Centos7升級到Centos8的教程(圖文詳解)

    從Centos7升級到Centos8的教程(圖文詳解)

    這篇文章主要介紹了從Centos7升級到Centos8的教程,在升級之前需要配置備份,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • Linux中mv命令的高級用法示例

    Linux中mv命令的高級用法示例

    這篇文章主要給大家介紹了關(guān)于Linux中mv命令的高級用法示例,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Linux具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • linux命令詳解date使用方法(計算母親節(jié)和父親節(jié)日期腳本示例)

    linux命令詳解date使用方法(計算母親節(jié)和父親節(jié)日期腳本示例)

    date命令可以用來顯示和修改系統(tǒng)日期時間,本文對其做了詳細(xì)說明,最近提供計算指定年份的母親節(jié)和父親節(jié)的日期腳本示例,大家參考使用吧
    2013-12-12

最新評論

泰宁县| 兖州市| 洪泽县| 高尔夫| 佛教| 大庆市| 沈丘县| 武川县| 集贤县| 宣恩县| 永昌县| 闸北区| 乐昌市| 内江市| 青岛市| 梧州市| 喀什市| 井冈山市| 繁昌县| 苍溪县| 崇明县| 馆陶县| 澄江县| 宜丰县| 五莲县| 阿克苏市| 兴仁县| 东兰县| 蓬莱市| 罗甸县| 安西县| 磴口县| 舟山市| 新建县| 绥中县| 定日县| 文水县| 黑河市| 大名县| 阿拉善盟| 塔城市|