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
下一篇 2016-08-12

相關推薦

  • 常用的MySQL數據庫備份

    常用的MySQL數據庫備份方式 前言 為什么需要備份數據? 數據的備份類型 MySQL備份數據的方式 備份需要考慮的問題 設計合適的備份策略 實戰演練 使用cp進行備份 使用mysqldump+復制BINARY LOG備份 使用lvm2快照備份數據 使用Xtrabackup備份 總結 前言 我們試著想一想, 在生產環境中什么最重要?如果我們服務器的硬件壞了可…

    2015-06-13
  • (總結)RHEL/CentOS 7.x的幾點新改變

    PS:RHEL7和CentOS7出來有一段時間了,拿出點時間研究下,有幾個地方跟6和5系列相比改變比較大,估計不少童鞋有點不太習慣。下面簡要舉例說明改變比較大的要點: 一、CentOS的Services使用了systemd來代替sysvinit管理 1、systemd的服務管理程序:systemctl是主要的工具,它融合之前service和chkconfig…

    Linux干貨 2015-02-10
  • Linux命令幫助文檔的使用及簡單命令使用-2016-7-25

    Linux命令幫助文檔的使用   相關命令 whatis    COMMAND –help    man and info 本地幫助文檔/usr/share/doc   在使用系統內建的幫助文檔之前,我們需要了解需要命令幫助是否是內部命令和外部命令…

    Linux干貨 2016-08-04
  • bash腳本循環語句用法練習

    bash腳本循環語句用法練習 1、使用循環語句寫一個腳本,實現打印出來國際象棋的棋盤 #方法1:使用until循環語句實現 [root@liang7 bin]# cat chess-until.sh  #!/bin/bash #Author:liang #Version:1.0 #Description:Print&n…

    Linux干貨 2016-08-24
  • Centos7下安裝httpd源碼包

    今天小編來跟大家做個練習,就是如何在Centos7下安裝httpd源碼包. 一:下載httpd最新版本的源碼包 [root@localhost ~]# rpm -qa |grep httpd //查詢系統上是否已安裝httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • 關于shell腳本基礎第二篇

                          shell腳本編程基礎第二篇 read命令 使用read來把輸入的值非配給一個或者多個shell變量,可以提示用戶輸入一些參數等,此時我們可以使用read命令來完成此功能 re…

    系統運維 2016-08-19

評論列表(1條)

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

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

欧美性久久久久