$@與$*的不同之處

$@與$*的不同之處

$*: 把我們傳遞給腳本的參數全部合為一個字節,當成一個字符串或者參數來使用。

$@: 把我們傳遞給腳本的所有參數,每個參數都為獨立字符串,當我們用 \((n) 來調用的時候, 輸入參數的位置為第幾個,那我們就用用\)n來調用第幾個,一對應。

下面我們用代碼來看一下這兩個的區別:

創建一個簡單的腳本讓他輸出我們輸入的多個參數:” $* ”

并且調用自腳本,傳給他一個” $@ “的參數。

$@與$*的不同之處

然后再子腳本中寫腳本調用并輸出3.log(父腳本)” $1 “,也就是第一個參數。

$@與$*的不同之處

運行腳本3.log 輸入3個參數分別為a;b;c看運行結果

$@與$*的不同之處

有結果可以看出,子程序在傳入” $@ “后,調用” $1 “,只取到了輸入的第一個參數的內容,說明多個參數并沒有被變為一個字符串。

接下來我們看一下” $* “的調用

4.log這個子程序我們不變。只把3.log中,自腳本調用的參數格式改為” $* “看看結果會如何

$@與$*的不同之處

$@與$*的不同之處

在4.log中,我們輸出的還是” $1 “,而這次把我們輸入的所有參數都顯示了出來。說明我們輸入的所有參數被當成一個參數來使用了。

希望通過這個小實驗讓大家了解二者的區別。

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

(0)
phosphorphosphor
上一篇 2017-06-06 20:35
下一篇 2017-06-07 08:27

相關推薦

  • N25-第八周

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash ipnet=172.16.250. trap ‘trap_action’ INT trap_action() { break return 1 } for ((i=1…

    Linux干貨 2017-05-27
  • 常用命令

    基本命令和系統命令

    Linux干貨 2017-11-30
  • Linux之bash shell腳本編程入門篇(三)之循環以及函數function的使用

    bash shell腳本編程入門篇(三)之循環 什么是循環執行?     將某代碼段重復運行多次     重復運行多少次:         循環次數事先已知    &nb…

    Linux干貨 2016-08-22
  • 集群-ipvsadm和NAT實驗(3)

    糾正:報文進入內核空間后,當到達input鏈時發現是一個集群服務時,則直接發送到postrouting鏈,不經過forward鏈。 調度算法: 1、靜態方法: rr:輪詢,即依照次序從所有RS中進行挑選 wrr:加權輪詢,按照權重在RS中進行輪詢 sh:source hashing,源地址哈希,即對來自相同客戶端的請求發送至同一RS,這樣會破壞負載均衡效果?!?/p>

    Linux干貨 2015-12-15
  • find命令基本應用

       簡單的find命令查找 Find +路徑+條件(支持文件通配)+找到后執行的操作 條件: 可根據文件類型查找:-type   f為普通文件 d為目錄文件 l為鏈接文件(常用) 可根據屬主和屬組查找:-uid  -gid 可根據時間戳來查找:alime(查看時間)ctime(文件屬性更改時間)m…

    Linux干貨 2017-04-11
  • shell編程、yum的使用

    shell編程、yum的使用 一、shell編程 1、while的特殊使用 while 循環的特殊用法(遍歷文件的每一行): while read line; do      循環體 done < /PATH/FROM/SOMEFILE   依次讀取/PATH/FROM/SOMEFILE 文件…

    Linux干貨 2016-08-21
欧美性久久久久