【发布时间】:2016-03-11 13:48:20
【问题描述】:
我正在尝试拆分键值对(围绕 = 符号),然后使用 bash 来编辑配置文件。但我需要 IFS 的
以下在我的主机系统上工作,但是当我通过 ssh 登录到我的 ubuntu 虚拟机时,我的 bash 版本错误。无论我尝试什么,
我知道我可以在我的主机 mac os x 系统上使用 IFS,如下所示:
var="word=hello"
IFS='=' read -a array <<<"$var"
echo ${array[0]} ${array[1]]}
#alternative -for calling through e.g. sh file.sh param=value
for var in "$@"
do
IFS='=' read -a array <<<"$var"
echo ${array[0]} ${array[1]]}
done
#alternative
IFS='=' read -ra array <<< "a=b"
declare -p array
echo ${array[0]} ${array[1]}
但这在我的虚拟机上不起作用。
我也知道我应该能够通过反引号$() 或echo "$var" | ... 切换
#Fails
IFS='=' read -ra myarray -d '' <"$var"
echo ${array[0]} ${array[1]]}
#Fails
echo "$var" | IFS='=' read -a array
echo ${array[0]} ${array[1]]}
#fails
echo "a=b" | IFS='=' read -a array
declare -p array
echo ${array[0]} ${array[1]}
感谢任何指点,因为我真的是 bash 新手。
【问题讨论】:
-
你的虚拟机有什么 bash 版本?你遇到了什么错误?
-
语法错误:重定向意外 4.3.11(1)-release