5

dashshell 环境中,我希望将字符串拆分为数组。以下代码适用于bash但不适用于dash.

IFS=""
var="this is a test|second test|the quick brown fox jumped over the lazy dog"
IFS="|"
test=( $var )
echo ${test[0]}
echo ${test[1]}
echo ${test[2]}

我的问题

是否dash支持这种风格的数组。如果没有,是否有任何建议可以在使用循环的情况下将其解析为另一种类型的变量?

4

1 回答 1

16

dash不支持数组。你可以尝试这样的事情:

var="this is a test|second test|the quick brown fox jumped over the lazy dog"
oldIFS=$IFS
IFS="|"
set -- $var
echo "$1"
echo "$2"
echo "$3"      # Note: if more than $9 you need curly braces e.g. "${10}"
IFS=$oldIFS

注意:由于变量扩展未加引号,因此根据设置为竖线将$var其拆分为字段。IFS这些字段成为set命令的参数,因此$1 $2等包含寻求的值。

--(end of options) 用于使变量扩展的结果不能被解释为 set 命令的选项。

于 2013-02-21T14:28:19.440 回答