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 關注
- 1061 瀏覽
添加回答
舉報