2016-11-14 17 views
0

我寫此功能打印在bash陣列而不使用可怕括號語法打印陣列。擊的函數,在多行

它會打印出第一個給你的數組,然後如果你給它另一個數組,它會再次打印出第一個數組。

我這樣稱呼它

$ arr=("single" "line" "arr") 
$ printarr $arr 
$ multiarr=("multi" 
> "line" 
> "arr") 
$ printarr $multiarr 

GNU的bash,版本3.2.25(1)-release

+1

@anubhava加入到問題 –

+1

相關的底部,甚至是一個傻瓜:https://stackoverflow.com/questions/1063347/passing-arrays-as-parameters-在巴sh – user000001

+1

現在正在工作,我想是發生了什麼事情是我用一個沒有美元符號的參數調用函數一次像'printarr arr' –

回答

3

如果你不想使用發送陣列的功能時,括號,發送只是它的名字,並使用間接擴展:

#! /bin/bash 
printarr() 
{ 
    arr=$1'[@]' 
    printf '%s\n' "${!arr}" 
} 

arr1=("single" "line" "arr with spaces") 
arr2=("SINGLE" "LINE" "ARR WITH SPACES") 

printarr arr1 
printarr arr2