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)版本上测试了它