在 Mac 上,bash 脚本显示关联数组(字典)的不确定行为

问题描述 投票:0回答:1

首先(mac 使用这个

%
来表示我习惯在终端中输入
~$
广告,因此我将使用 mac 约定来指示启动的命令:

~% echo $SHELL
/bin/zsh
~% zsh --version
zsh 5.9 (x86_64-apple-darwin22.0)

test.sh(vim 风格的行号,方便阅读):

    1 #!/bin/bash
    2 # 
    3 declare -A myvector
    4 echo "wut?"

我假设 zsh(我不知道如何使用)运行 bash(我生来就有它:_),但是

~% chmod u+x ./test.sh
~% ./test.sh
./test.sh: line 3: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
wut?

然后执行:

~% . ./test.sh
wut?

我假设. zsh 是否启动脚本但没有 bash。

我从unix.stackoverflow.com和ask Different.stackoverflow.com的stackoverflow中检查了有关如何在zshbash中使用declaretypeset的各种问题

问题是

man bash
man zshbuiltins
给出了使用关联数组的所有不一致且无效的方法。

为什么我不能声明向量并使用 bash 方式(并且正如 man zshbuiltins 所说我可以)。

以下内容绝对行不通 如何在 Bash 中迭代关联数组

所以将其更改为

    ...
    3 declare -a myvector
    ...

所以用 初始化向量也不起作用

    myvector=(a 0 b 0 c 0)

也不

    myvector=("a" 0 "b" 0 "c" 0)

我真的很茫然…我应该再退出C.S. 5年吗xD?

bash macos unix vector zsh
1个回答
0
投票

关于“我假设 zsh(我不知道如何使用)运行 bash”——不,

zsh
bash
是 2 个完全不同的 shell,每个都有自己的语法、内置命令等。关于“ mac 使用这个 % 来表示我习惯的 ~$" - 不完全是,这只是您在
PS1
变量中设置的任何字符串(或 .bash_profile 或 .zsh_profile,无论您使用哪个)。学习
.profile
或安装当前版本的
zsh
或使用 Mac 上的旧版本(谷歌“在 Mac 上使用 bash”或类似版本)。
试试这个:

bash

© www.soinside.com 2019 - 2024. All rights reserved.