Когда вы оставляете расширение переменной без кавычек, например $VotePedro
, выполняются следующие шаги:
- Посмотрите значение переменной.
- Разделите значение в каждом блоке пробелов в список строк. В более общем смысле, разделителями являются символы в значении
IFS
переменной; по умолчанию это пробел, табуляция и перевод строки.
- Интерпретировать каждый элемент списка как шаблон подстановки; для каждого элемента, если шаблон соответствует некоторым файлам, замените этот элемент списком совпадающих имен файлов.
Таким образом, вы можете разбить строку на элементы, разделенные пробелами (принимая значение по умолчанию IFS
), отключив расширение по шаблону и развернув переменную, значение которой является этой строкой, вне кавычек.
VotePedro="Vote for Pedro"
set -f
votePedroArray=($VotePedro)
set +f
for i in "${votePedroArray[@]}"; do …
Вы можете напрямую сделать разделение в точке использования; это будет работать даже в таких оболочках, как sh, у которых нет массивов:
VotePedro="Vote for Pedro"
set -f
for i in ${votePedro}; do
set +f
…
done
set +f