Bash 本地:-n:无效选项

Bash 本地:-n:无效选项,bash,ubuntu,Bash,Ubuntu,当使用/script执行脚本时,我看到 本地:-n:无效选项 我的测试脚本:cat脚本 #!/bin/bash declare -Ax BINS_TO_ARCH_FILE=( ["file1"]="test/file1" ["file2"]="test/file2" ["file3"]="test/file3" ); function archive-bz2() { local -n DO_NOT_USE_THIS_NAME="$1"; for path_to_archive

当使用
/script
执行脚本时,我看到 本地:-n:无效选项

我的测试脚本:
cat脚本

#!/bin/bash

declare -Ax BINS_TO_ARCH_FILE=(
 ["file1"]="test/file1"
 ["file2"]="test/file2"
 ["file3"]="test/file3"
);

function archive-bz2()
{
  local -n DO_NOT_USE_THIS_NAME="$1";

  for path_to_archive in "${!DO_NOT_USE_THIS_NAME[@]}"; do
    echo "path_to_archive: $path_to_archive";
  done
}

archive-bz2 BINS_TO_ARCH_FILE
但是当我在一个有

bash script
它正在工作

echo $SHELL
/bin/bash

bash --version
GNU bash, version 4.4.0(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
echo$SHELL
/bin/bash
bash——版本
GNUBash,版本4.4.0(1)-发行版(x86_64-unknown-linux-GNU)
版权所有(C)2016免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件;您可以自由更改和重新分发它。
在法律允许的范围内,不存在任何担保。
我还使用较旧的bash版本对其进行了测试,这两种方法都运行良好:( 在两个本地上都有内置命令

type local
local is a shell builtin

bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
输入本地
local是一个内置的shell
bash——版本
GNUBash,版本4.3.11(1)-发行版(x86_64-pc-linux-GNU)
版权所有(C)2013免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件;您可以自由更改和重新发布它。
在法律允许的范围内,不存在任何担保。

将-n选项传递给local应该做什么?当您将数组作为参数传递时,如果您的局部变量没有将-n选项作为输出,我会看到path\u to\u archive:0使用
-n
的意义在于您不需要在参数扩展中使用
。不清楚您安装了多少版本的
bash
或者它们的安装位置。
/bin/bash--version
哪个bash
输出?我在两台不同的ubuntu机器4.4.0(1)版本和4.3.11(1)版本上测试了它