首先(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中检查了有关如何在zsh和bash中使用declare、typeset的各种问题
问题是
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?
关于“我假设 zsh(我不知道如何使用)运行 bash”——不,
zsh
和 bash
是 2 个完全不同的 shell,每个都有自己的语法、内置命令等。关于“ mac 使用这个 % 来表示我习惯的 ~$" - 不完全是,这只是您在 PS1
变量中设置的任何字符串(或 .bash_profile 或 .zsh_profile,无论您使用哪个)。学习 .profile
或安装当前版本的 zsh
或使用 Mac 上的旧版本(谷歌“在 Mac 上使用 bash”或类似版本)。试试这个:
bash