3 回答
TA贡献1802条经验 获得超10个赞
确保在外壳程序脚本(#!/bin/bash或任何其他内容)顶部作为解释程序调用的bash的版本也为版本4。如果正在执行以下操作:
bash --version
并给您v4,请执行a which bash检查其位置。
TA贡献1851条经验 获得超3个赞
如果您想将chars作为bash v3的数组索引使用,这是一种解决方法:
array=(
'hello::world.'
'nice::to meet you'
)
for index in "${array[@]}" ; do
KEY="${index%%::*}"
VALUE="${index##*::}"
echo "$KEY - $VALUE"
done
输出:
hello - world.
nice - to meet you
TA贡献1816条经验 获得超4个赞
在使用Homebrew安装更新的Bash之后,以下似乎是macOS上的典型场景:
/bin/bash
是旧的Bash,3.2/usr/local/bin/bash
是了解关联数组(4.0或更高版本)的新Bashtype bash
指向/usr/local/bin/bash
并且bash --version
是新的(因为它解析为/usr/local/bin/bash --version
)
但是,#!/bin/bash
运行带有shebang行的脚本./script
将使用旧的Bash(问题中的方案)。解决方案是:
使用以下命令调用脚本
bash script
:将使用新的Bash。缺点:您总是必须这样称呼它。将shebang行更改为
#!/usr/local/bin/bash
。缺点:在许多系统上,没有Bash/usr/local/bin
且您的脚本不再可移植。将shebang行更改为
#!/usr/bin/env bash
。这将使用第一个bash
在你的PATH
,这应该是新的。这是非常可移植的。唯一的缺点是您不完全知道将执行哪个Bash。
- 3 回答
- 0 关注
- 987 浏览
添加回答
举报