我在 stackoverflow 上读过类似的文章,但没有一篇文章解决了我的具体问题,我真的很感激任何帮助,因为我真的在这个问题上失去了理智。
#!/usr/bin/env bash
的脚本,我已经使用 echo 检查了脚本内部的 bash 版本,它确实是我通过 HomeBrew 下载的 bash version 5
- 我读到我不需要使用路径 /opt/homebrew/bin/bash
这是我的 bash 所在的位置 [apple M1 cpu],因为在点 1 中粘贴了 shebang。declare -A
,我还是返回了以下错误:
declare: -A: invalid option declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
#!/usr/bin/env bash
echo "BASH_VERSION=$BASH_VERSION"
# save current branches in packages as `composer install` may change them to master
SCRIPTPATH="$( cd "$( /usr/bin/dirname "$0" )" && pwd )"
DIR=`pwd`
declare -A BRANCHES
DIR=`pwd`
for d in */; do
cd "$DIR/$d"
BRANCH=`git rev-parse --abbrev-ref HEAD`
if [ "${BRANCH}" != "master" ]; then
BRANCHES[$d]="${BRANCH}"
fi
done
返回的 bash 版本:
BASH_VERSION=5.1.16(1)-release
有什么建议吗?请告诉我您还需要哪些其他详细信息。另外,也许是声明关联数组的替代语法,也许我无法在初始化之前声明它们?
我也有一个关于此的后续问题。该脚本位于 docker 目录内 - 如果 docker 旨在使用虚拟 Linux 进行安装和实例 - 那么为什么我需要对我的 shell 脚本进行某些 macOS 支持的更改?
这取决于您如何运行脚本。
脚本中有以下行:
echo "BASH_VERSION=$BASH_VERSION"
如果您像
./myscript.sh
那样调用脚本,则 BASH_VERSION=v3
如果您调用它bash ./myscript.sh
,则 BASH_VERSION=v5
所以,我要做的就是跑步
bash ./myscript