声明-A fake_declaration =()在MacOsX中不起作用

时间:2015-09-20 13:24:53

标签: bash

我有一个不适用于MacOsX的脚本。但这不是一个真正的问题:我可以使用try catch避免奇怪的行为。但总是要重申我想在我需要的所有环境中使我的脚本兼容的事实。

{
    declare -A fake_declaration=()
} || {
    clear
    printf "\n\n\nThis script cannot work here\n\n"
    exit
}

还存在一种解决方法,以便在MacOsX中使用关联数组吗?

1 个答案:

答案 0 :(得分:2)

BASH版本4.0中引入了关联数组功能。默认OSX附带BASH版本3.2.xy

您可以使用以下方法检查您的bash版本:

echo $BASH_VERSION

对我来说,它显示:

3.2.57(1)-release

您可以像这样调整伪脚本,使其在有或没有关联数组的情况下工作,而不会产生错误:

{ declare -A fake_declaration=(); } 2>/dev/null || 
    { clear; printf "\n\n\nThis script cannot work here\n\n"; }

或者您可以使用home brew package与所有其他gnu礼物安装BASH 4.3+