shell中的位置參數變量

要了解位置變量,首先要知道什么是變量?

 變量就是讓某一個特定的字符串來代表不固定的內容,簡單理解就是用一個簡單的“字眼”來替代另一個比較復雜或者容易變動的數據。

而什么又是位置變量呢?

 位置變量就是bash將傳遞給腳本的參數,按照位置不同,保存在不同的位置變量中,以便于腳本調用這些變量。

位置參數變量:

$1, $2, …: 對應第1、第2等參數,shift [n]換位置
$0:  命令本身
$*:  傳遞給腳本的所有參數,全部參數合為一個字符串;代表“$1$2$3…”
$@:  傳遞給腳本的所有參數,每個參數為獨立字符串;代表“"$1" "$2" "$3" …”
$#:  傳遞給腳本的參數的個數

    注:$@ ,$* 只在被雙引號包起來的時候才會有差異

示例:

編寫一個腳本來測試一下上述的位置參數變量:

shell中的位置參數變量

shell中的位置參數變量

這個示例,可以看到位置參數變量,在bash中就實現定義好的,按照位置分配不同的變量。在執行腳本的時候,后面直接跟參數,就會賦予不同的變量,這樣在腳本中就可以直接調用。通過示例可以證明,

$N(N表示不同的數字),及可表明第N個參數變量;$0表示命令本身。

注:第十個以上的位置參數變量要使用“{ }”括起來,如:${10}


示例:比較$10和${10}的區別

shell中的位置參數變量

可以看到"$10"表示($1)0;"${10}"才表示第十個位置參數變量.所以10以上的位置參數變量,需要用配合"{ }"來使用。



示例:比較"$*"和"$@"的區別

首先在一個空目錄下編寫了一個測試腳本,測試過程如圖所示:shell中的位置參數變量

可以看到:“touch "$*"”創建了一個名為“aa bb”的文件

而“mkdir "$@"”創建了aa和bb兩個目錄。

所以,"$*"和"$@"雖然都是表示全部的參數,但是"$*"是把所有的參數當成為一個整體,而"$@"則是把每個參數獨立看待。

需要注意的是,$*和$@只在被雙引號包起來的時候才會有差異。

讓我們來看下沒有加雙引號的情況:

shell中的位置參數變量

如圖所示,使用“touch $*”是創建了cc和dd兩個文件,而“mkdir $@”因此存在同名文件而沒有創建成功,但是通過執行過程也可以看到,它是要創建cc和dd兩個目錄。所以以后使用"$*"或"$@"時,一定要加上雙引號。

還有一個位置參數變量為$#,這個變量表示傳遞給腳本的參數的個數,讓我們來看看如何使用這個變量。

shell中的位置參數變量

可以看到$#表示位置參數的個數,并且在腳本中可以利用"$#"來判斷是否存在位置參數。

原創文章,作者:Groot,如若轉載,請注明出處:http://www.www58058.com/34071

(1)
GrootGroot
上一篇 2016-08-12 14:45
下一篇 2016-08-12 16:06

相關推薦

  • Linux 救援模式初步運用詳解

    Linux救援模式初步運用 背景: 在運用Linux時會出現一些誤操作,導致系統無法正常使用,比如刪除了某個重要依賴庫,或者刪除了rpm等等。在這里記錄下具體的操作步驟,供以后參考。 意義: 學會在使用Linux系統出現誤刪除系統重要文件時,能使用救援模式來恢復系統。 案例詳解: 當我們刪除了Linux系統重要庫文件時,該如何恢復,比如在這里我們刪除/lib…

    2017-07-29
  • 內核及模塊管理

    內核及模塊管理基礎 查詢程序的依賴庫 ldd命令ldd [OPTION]…FILE…     [root@centos6 ~]# ldd /bin/ls         linux-vd…

    Linux干貨 2016-09-19
  • LVS 之 初識LVS

    LVS 之 初識LVS LVS 之 初識LVS 0x00 概述 0x01 LVS拓撲結構圖: lvs集群類型中的術語 : 0x02 lvs-type lvs-nat lvs-dr lvs-tun lvs-fullnat : 0x03 調度算法(scheduler) 0x00 概述 LVS : Linux Virtual Server lvs 工作在 IOS …

    2017-05-11
  • shell通配符與正則表達式

        通配符是系統level的 而正則表達式需要相關工具的支持: egrep, awk, vi, perl。在文本過濾工具里,都是用正則表達式,比如像awk,sed等,是針對文件的內容的。通配符多用在文件名上,比如查找find,ls,cp,等等。 1.通配符       (1)…

    Linux干貨 2016-02-28
  • KVM虛擬化平臺部署及管理

    前言 KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet開發。2007年2月被導入Linux 2.6.20核心中,成為內核源代碼的一部分。2008年9月4日,Redhat收購了Qumranet,至此Redhat擁有了自己的虛擬化解決方案,之后便舍棄Xen開始全面扶持KVM,從RHEL6開始KVM便被默認內置于內核中。本文…

    Linux干貨 2015-07-19
  • 博客開始的地方

    來北京挺長時間了,一直都在瞎忙,特別想找個地逛逛,約朋友一起去,結果人家只喜歡吃飯,逛街,來北京瞎逛過兩次,第一次是面試路過潘家園,然后進去逛了半天,看各種各樣的老古董,當然最多的還是手串,那種核桃,當然還是看到了好多好多有意思的東西,比如下面的小和尚和老和尚,小和尚光著頭感覺特別可愛,老和尚還賣萌, 當然還有下面這個關老爺,他的肚子為什么被雕刻的那么大,難…

    2018-03-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-16 16:21

    總結的很全面,圖片清晰明了,完成的很認真,再接再厲!

欧美性久久久久