gpt4 book ai didi

bash - 本地 : -n: invalid option

转载 作者:行者123 更新时间:2023-12-05 07:47:02 27 4
gpt4 key购买 nike

当使用 ./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

但是当我用

在子 shell 中执行它时
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.

我也用旧的 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.

最佳答案

这是一个老把戏,在这两种情况下都对我很有效,所以我猜它一定是你的发行版中的一些错误......

每本手册:-n 表示 DO_NOT_USE_THIS_NAME 是对 $1 (BINS_TO_ARCH_FILE) 命名的变量的引用

这就是 archive-bz2 BINS_TO_ARCH_FILE 可以工作的原因,注意缺少的 $[@]因此它可用于向函数插入复杂参数。

请注意引用在两个方向上都起作用,因此该函数还可以更新 BINS_TO_ARCH_FILE 的值,因此您可以使用这种方式从函数中提取值而不是有限的返回值。

localdeclare 几乎相似 https://wiki.bash-hackers.org/commands/builtin/declare

关于bash - 本地 : -n: invalid option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40237782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com