欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解shell數(shù)組${arr[*]}和${arr[@]}區(qū)別

 更新時間:2023年05月09日 14:50:25   作者:ascertain  
本文主要介紹了詳解shell數(shù)組${arr[*]}和${arr[@]}區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

引用數(shù)組中所有元素時${arr[*]}和${arr[@]}是有細微區(qū)別的

Example:

#!/bin/sh
function showarr(){
        arr=$1
        for b in ${arr[*]};do
                echo $b
        done
        return 0
}
regions=('aa pp' 'bb' 'cc')
showarr $regions
exit 0

$regions其實只引用了數(shù)組的第一個元素

#!/bin/sh
function showarr(){
        arr=$1
        for b in ${arr[*]};do
                echo $b
        done
        return 0
}
regions=('aa pp' 'bb' 'cc')
showarr ${regions[*]}
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
showarr ${regions[@]}
exit 0

引用了數(shù)組全部元素,但是showarr函數(shù)中arr變量只獲取了第一個參數(shù)的值 "aa"

#!/bin/sh
function showarr(){
        arr=$1
        for b in ${arr[*]};do
                echo $b
        done
        return 0
}
regions=('aa pp' 'bb' 'cc')
showarr "${regions[*]}"
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
showarr "${regions[@]}"
exit

此種情況跟 $* $@比較類似,${regions[*]}把參數(shù)打散,作為一個字符串整體傳遞,原有參數(shù)結構被破壞

${regions[@]}保持了原參數(shù)結構,因此$1其實為 'aa pp'

#!/bin/sh
function showarr(){
        arr=$1
        for b in ${arr[*]};do
                echo $b
        done
        echo "\$1: $1"
        echo "\$2: $2"
        echo "\$3: $3"
        return 0
}
regions=('aa pp' 'bb' 'cc')
showarr "${regions[*]}"
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
showarr "${regions[@]}"
exit 0

改進后的腳本執(zhí)行情況驗證了我們的猜想

結論: $@ $* ${arr[@]} ${arr[*]} 類似,加不加"", 使用@還是*根據(jù)實際情況選擇

不加""的時候,@ 和 * 完全一樣,加""時,@可以保持原有參數(shù)結構,*將原有參數(shù)結構打亂

shell對 "$@"會做特殊處理,"$*"可以認為是普通字符串

#!/bin/sh
for p in "$*";do
        echo $p
done
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for p in "$@";do
        echo $p
done

"$@" 已經不是簡單的字符串了

到此這篇關于詳解shell數(shù)組${arr[*]}和${arr[@]}區(qū)別的文章就介紹到這了,更多相關shell ${arr[*]}和${arr[@]}內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • linux?文件管理命令之dirname?\?find?\?finds?\?in?\?indir詳解

    linux?文件管理命令之dirname?\?find?\?finds?\?in?\?indir詳解

    這篇文章主要介紹了linux文件管理命令之dirname\find\finds\in\indir詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Shell腳本一次讀取文件中一行的2種寫法

    Shell腳本一次讀取文件中一行的2種寫法

    這篇文章主要介紹了Shell腳本一次讀取文件中一行的2種寫法,本文還同時講解了Shell讀取文本文件的2種方法,需要的朋友可以參考下
    2015-04-04
  • Shell 字符串拼接的實現(xiàn)示例

    Shell 字符串拼接的實現(xiàn)示例

    這篇文章主要介紹了Shell 字符串拼接的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 詳解gitBash中使用Linux中的tree命令

    詳解gitBash中使用Linux中的tree命令

    最近很多同學問小編關于Linux命令的問題,小編今天主要介紹Linux里的tree命令,tree命令是一種遞歸目錄列表顯示命令,使用該命令可以以樹狀圖的形式列出一個目錄下所有文件內容,本文給大家介紹gitBash中使用Linux中的tree命令,一起看看吧
    2023-11-11
  • Linux查看端口占用情況的常用命令

    Linux查看端口占用情況的常用命令

    這篇文章主要給大家介紹了Linux查看端口占用情況的常用命令,lsof命令,netstat命令,ss命令,fuser命令,ps命令以及proc文件系統(tǒng)這幾種常用命令,感興趣的小伙伴跟著小編一起來看看吧
    2023-11-11
  • Shell執(zhí)行/調用Java/Jar程序例子的實例詳解

    Shell執(zhí)行/調用Java/Jar程序例子的實例詳解

    這篇文章主要介紹了Shell執(zhí)行/調用Java/Jar程序例子的實例詳解的相關資料,這里提供實例幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 建立基于虛擬用戶的VSftpd服務

    建立基于虛擬用戶的VSftpd服務

    這篇文章主要介紹了建立基于虛擬用戶的VSftpd服務的相關資料,需要的朋友可以參考下
    2015-09-09
  • shell腳本編程之循環(huán)語句

    shell腳本編程之循環(huán)語句

    這篇文章主要介紹了shell腳本編程之循環(huán)語句的相關資料,需要的朋友可以參考下
    2016-01-01
  • shell腳本之sed詳細用法詳解

    shell腳本之sed詳細用法詳解

    Sed是一個非交互性文本流編輯器,它編輯文件或標準輸入導出的文本拷貝,vi中的正則表達式命令在sed中大多可以通用,下面這篇文章主要給大家介紹了關于shell腳本之sed詳細用法的相關資料,需要的朋友可以參考下
    2022-07-07
  • Shell程序退出狀態(tài)碼的命令詳解

    Shell程序退出狀態(tài)碼的命令詳解

    在本篇文章當中主要給大家介紹一個shell的小知識——狀態(tài)碼。這是當我們的程序退出的時候,子進程會將自己程序的退出碼傳遞給父進程,有時候我們可以利用這一操作做一些進程退出之后的事情,比如當程序執(zhí)行失敗或者被某個信號殺死我們就可以了解到,然后做出對應的措施
    2022-10-10

最新評論