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

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

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

引用數(shù)組中所有元素時(shí)${arr[*]}和${arr[@]}是有細(xì)微區(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í)只引用了數(shù)組的第一個(gè)元素

#!/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變量只獲取了第一個(gè)參數(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

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

${regions[@]}保持了原參數(shù)結(jié)構(gòu),因此$1其實(shí)為 '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

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

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

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

shell對(duì) "$@"會(huì)做特殊處理,"$*"可以認(rèn)為是普通字符串

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

"$@" 已經(jīng)不是簡(jiǎn)單的字符串了

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    建立基于虛擬用戶(hù)的VSftpd服務(wù)

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

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

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

    shell腳本之sed詳細(xì)用法詳解

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

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

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

最新評(píng)論