3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
確保在外殼程序腳本(#!/bin/bash或任何其他內(nèi)容)頂部作為解釋程序調(diào)用的bash的版本也為版本4。如果正在執(zhí)行以下操作:
bash --version
并給您v4,請(qǐng)執(zhí)行a which bash檢查其位置。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您想將chars作為bash v3的數(shù)組索引使用,這是一種解決方法:
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貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
在使用Homebrew安裝更新的Bash之后,以下似乎是macOS上的典型場(chǎng)景:
/bin/bash
是舊的Bash,3.2/usr/local/bin/bash
是了解關(guān)聯(lián)數(shù)組(4.0或更高版本)的新Bashtype bash
指向/usr/local/bin/bash
并且bash --version
是新的(因?yàn)樗馕鰹?code>/usr/local/bin/bash --version)
但是,#!/bin/bash
運(yùn)行帶有shebang行的腳本./script
將使用舊的Bash(問(wèn)題中的方案)。解決方案是:
使用以下命令調(diào)用腳本
bash script
:將使用新的Bash。缺點(diǎn):您總是必須這樣稱(chēng)呼它。將shebang行更改為
#!/usr/local/bin/bash
。缺點(diǎn):在許多系統(tǒng)上,沒(méi)有Bash/usr/local/bin
且您的腳本不再可移植。將shebang行更改為
#!/usr/bin/env bash
。這將使用第一個(gè)bash
在你的PATH
,這應(yīng)該是新的。這是非??梢浦驳摹Nㄒ坏娜秉c(diǎn)是您不完全知道將執(zhí)行哪個(gè)Bash。
添加回答
舉報(bào)