第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在bash中將數(shù)組作為參數(shù)傳遞

在bash中將數(shù)組作為參數(shù)傳遞

在bash中將數(shù)組作為參數(shù)傳遞如何將數(shù)組作為參數(shù)傳遞給bash函數(shù)?注意:在Stack Overflow上沒有找到答案后,我自己發(fā)布了一些粗略的解決方案。它只允許傳遞一個數(shù)組,它是參數(shù)列表的最后一個元素。實(shí)際上,它根本沒有傳遞數(shù)組,而是傳遞了它的元素列表,這些元素通過called_function()重新組合成一個數(shù)組,但它對我有用。如果有人知道更好的方式,請隨時在此處添加。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個贊

您可以使用以下內(nèi)容將多個數(shù)組作為參數(shù)傳遞:

takes_ary_as_arg(){
    declare -a argAry1=("${!1}")
    echo "${argAry1[@]}"

    declare -a argAry2=("${!2}")
    echo "${argAry2[@]}"}try_with_local_arys(){
    # array variables could have local scope
    local descTable=(
        "sli4-iread"
        "sli4-iwrite"
        "sli3-iread"
        "sli3-iwrite"
    )
    local optsTable=(
        "--msix  --iread"
        "--msix  --iwrite"
        "--msi   --iread"
        "--msi   --iwrite"
    )
    takes_ary_as_arg descTable[@] optsTable[@]}try_with_local_arys

將回應(yīng):

sli4-iread sli4-iwrite sli3-iread sli3-iwrite  
--msix  --iread --msix  --iwrite --msi   --iread --msi   --iwrite


查看完整回答
反對 回復(fù) 2019-07-25
?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個贊

注意:在我沒有在Stack Overflow上找到答案之后,這是我自己發(fā)布的一些粗略的解決方案。它只允許傳遞一個數(shù)組,它是參數(shù)列表的最后一個元素。實(shí)際上,它根本沒有傳遞數(shù)組,而是傳遞了它的元素列表,這些元素通過called_function()重新組合成一個數(shù)組,但它對我有用。稍后Ken發(fā)布了他的解決方案,但我在這里保留了他的“歷史性”參考。

calling_function(){
    variable="a"
    array=( "x", "y", "z" )
    called_function "${variable}" "${array[@]}"}called_function(){
    local_variable="${1}"
    shift
    local_array=("${@}")}

由TheBonsai改進(jìn),謝謝。


查看完整回答
反對 回復(fù) 2019-07-25
?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個贊

這個怎么運(yùn)作

函數(shù)中的takes_ary_as_arg descTable[@] optsTable[@]try_with_local_arys()發(fā)送:

  1. 這實(shí)際上是創(chuàng)建了函數(shù)可訪問的descTableoptsTable數(shù)組的副本takes_ary_as_arg。

  2. takes_ary_as_arg()函數(shù)接收descTable[@]optsTable[@]作為字符串,這意味著$1 == descTable[@]$2 == optsTable[@]。

  3. takes_ary_as_arg()函數(shù)的開頭,它使用${!parameter}語法,稱為間接引用或有時雙引用,這意味著我們使用擴(kuò)展的值而不是使用值$1$1,例如:

    baba=booba
    variable=baba
    echo ${variable} # babaecho ${!variable} # booba

    同樣的$2。

  4. 把它放在一個數(shù)組(后面的括號)argAry1=("${!1}")創(chuàng)建擴(kuò)展,就像直接寫在那里。在那里不是必需的。argAry1=descTable[@]argAry1=("${descTable[@]}")declare

NB:值得一提的使用該托架形式的數(shù)組初始化初始化根據(jù)新陣列IFS內(nèi)部字段分隔符,其是通過默認(rèn)標(biāo)簽換行空間。在這種情況下,因?yàn)樗褂昧?code>[@]符號,所以每個元素本身都被看作是被引用(與之相反[*])。

我的預(yù)訂

BASH,局部變量范圍是當(dāng)前函數(shù)和從它調(diào)用的每個子函數(shù),這轉(zhuǎn)換為takes_ary_as_arg()函數(shù)“看到”那些descTable[@]optsTable[@]數(shù)組的事實(shí),因此它正在工作(參見上面的解釋)。

既然如此,為什么不直接看看那些變量呢?這就像寫在那里:

argAry1=("${descTable[@]}")

參見上面的解釋,它只是descTable[@]根據(jù)當(dāng)前的值復(fù)制數(shù)組的值IFS。

綜上所述

從本質(zhì)上講,這通過沒有任何價值 - 像往常一樣。

我還要強(qiáng)調(diào)丹尼斯威廉姆森上面的評論:稀疏數(shù)組(沒有所有鍵定義的數(shù)組 - 其中帶有“孔”)將無法按預(yù)期工作 - 我們將松開鍵并“壓縮”數(shù)組。

話雖這么說,我確實(shí)看到了泛化的價值,因此函數(shù)可以在不知道名稱的情況下得到數(shù)組(或副本):

  • 對于?“副本”:這種技術(shù)已經(jīng)足夠好了,只需要意識到索引(鍵)已經(jīng)消失了。

  • 對于真實(shí)副本:我們可以使用eval作為密鑰,例如:

    eval local keys=(\${!$1})

然后使用它們創(chuàng)建一個副本。注意:這里!沒有使用它以前的間接/雙重評估,而是在數(shù)組上下文中它返回?cái)?shù)組索引(鍵)。

  • 當(dāng)然,如果我們要傳遞descTableoptsTable字符串(沒有[@]),我們可以使用數(shù)組本身(如引用中所示)eval。對于接受數(shù)組的泛型函數(shù)。


查看完整回答
反對 回復(fù) 2019-07-25
  • 3 回答
  • 0 關(guān)注
  • 1030 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號