2016-03-07 69 views
4

大师的函数内的数组值。我正在开发一个bash脚本并学习bash中的数组。我读了几条关于这个的文章,但是我的头炸了起来。我曾经在PHP和bash中编程对我来说是新的和“基本的”。Bash。返回基于参数

我打算将multilang支持加入到我的脚本中,并且我需要在不同的数组中定义所有可见的短语,让他们用参数调用一个函数。很难解释我会把我想要在PHP中做什么什么是我的“舒适”的语言,然后我在bash脚本中不工作aproximation。

Php: 
function english($index) { 
    $strings=array(
       "phrase1", 
       "phrase2" 
       ); 
    return $strings[$index]; 
} 
echo english(1); //It produces (zero based) "phrase2" 

好了,现在我可怜的bash脚本试图做同样的:

Bash: 
function english() { 
    strings=("phrase1" "phrase2") 
    return ${strings[$1]} 
} 
echo english 2 

我怎样才能返回数组调用包含基于函数的参数数组和函数的期望值?

任何人都有一个很好的bash手册来做一些这方面的实践?谢谢。

+0

Bash函数返回int作为状态值,而不是字符串。 – karakfa

回答

2

shell中的返回值用于退出代码,而不是数据。相反,将值写入标准输出(如果需要,可以使用命令替换捕获它)。

english() { 
    strings=("phrase1" "phrase2") 
    echo "${strings[$1]}" 
} 

english 1   # Arrays are indexed from 0 
word=$(english 0) # word=phrase1 
1

尝试:

function english { 
    strings=("phrase1" "phrase2") 
    echo ${strings[$1]} 
} 
#Arrays are zero-based 
english 1; 

Bash Guide for Beginners