詳解shell數(shù)組${arr[*]}和${arr[@]}區(qū)別
引用數(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
此種情況跟 $* $@比較類似,${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[*]} 類似,加不加"", 使用@還是*根據(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)文章
shell腳本中echo顯示內(nèi)容帶顏色的實(shí)現(xiàn)方法
這篇文章主要介紹了shell腳本中通過(guò)echo顯示帶顏色內(nèi)容的實(shí)現(xiàn)方法,需要的朋友可以參考下2013-11-11
Shell內(nèi)置命令之exit的語(yǔ)法與實(shí)例
系統(tǒng)中是有exit命令的,用于退出當(dāng)前用戶的登錄狀態(tài),但是在?Shell?腳本中,exit?語(yǔ)句是用來(lái)退出當(dāng)前腳本的,下面這篇文章主要給大家介紹了關(guān)于Shell內(nèi)置命令之exit的語(yǔ)法與實(shí)例,需要的朋友可以參考下2022-03-03
Linux shell 之 提取文件名和目錄名的一些方法總結(jié)
本篇文章主要介紹了Linux shell 之 提取文件名和目錄名的一些方法總結(jié),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01
shell腳本快速創(chuàng)建格式化磁盤與詳細(xì)操作步驟
這篇文章主要介紹了shell腳本快速創(chuàng)建格式化磁盤與詳細(xì)操作步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

