我在使用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发布于 2018-08-09 01:28:13
您需要引用${PACKET_MANAGERS[@]}
for system in "${PACKET_MANAGERS[@]}"否则,将对展开数组表达式的结果进行单词拆分,因此数组中每个元素中的每个单词都将是for循环的单独迭代。使用[@]将使每个数组元素在结果中成为一个单独的单词。
https://stackoverflow.com/questions/51752266
复制相似问题