我在使用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
答案 0 :(得分:2)
您需要引用${PACKET_MANAGERS[@]}
:
for system in "${PACKET_MANAGERS[@]}"
否则,将在扩展数组表达式的结果上进行单词拆分,因此数组每个元素中的每个单词将是for
循环的单独迭代。使用[@]
将使每个数组元素成为结果中的单独单词。