设置IFS以从此处字符串读取时忽略空格

时间:2018-08-08 17:18:24

标签: bash ifs

我在使用IFS区分包和发行版方面有些问题。 现在我想添加CentOS的版本号,但是问题是CentOS和数字6被IFS分开了。 我的问题是,如何让IFS忽略空格并将其视为单个值? 在此先感谢:)

...

PACKET_MANAGERS=(
    "Debian|package:package:package|apt:dpkg-query|"
    "CentOS 6|package:package:package|yum:rpm|${CentOS_6_REPO}"
    ...
)
...
   for system in ${PACKET_MANAGERS[@]}
do
    IFS='|' read -r -a data <<< $system
    debug "Testing ${system} => ${data[0]}"

    if echo "${SYSTEM_NAME}" | grep "${data[0]}" &>/dev/null; then
        SYSTEM_NAME_DETECTED="${data[0]}"
    else
        continue
    fi

...

done

1 个答案:

答案 0 :(得分:2)

您需要引用${PACKET_MANAGERS[@]}

for system in "${PACKET_MANAGERS[@]}"

否则,将在扩展数组表达式的结果上进行单词拆分,因此数组每个元素中的每个单词将是for循环的单独迭代。使用[@]将使每个数组元素成为结果中的单独单词。