【问题标题】:Return value from array inside a function based on parameter根据参数从函数内部的数组返回值
【发布时间】:2016-03-07 20:43:08
【问题描述】:

大师。我正在开发一个 bash 脚本并学习 bash 中的数组。我读了一些关于这个的方法,但我的头爆炸了。我以前用 php 编程,而 bash 对我来说是新的和“初级的”。

我要为我的脚本添加多语言支持,我需要在不同的数组中定义所有可见的短语,以使它们调用带有参数的函数。很难解释我会把我想做的事情放在 php 中我的“舒适”语言是什么,然后我在 bash 脚本中不工作。

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 手册来做一些关于这个的练习?谢谢。

【问题讨论】:

  • bash 函数返回 int 作为状态值,而不是字符串。

标签: arrays bash function parameters


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    试试:

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

    Bash Guide for Beginners

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多