#linux #bash
Есть массив с путями и цикл его переберающий (песочница):
paths=(
"~/.config/sublime-text-3/Installed Packages"
~/.config/sublime-text-3/Local
~/.config/sublime-text-3/Packages
)
for path in ${paths[@]}
do
echo ${path}
done
Результат:
~/.config/sublime-text-3/Installed
Packages
/home/cg/root/.config/sublime-text-3/Local
/home/cg/root/.config/sublime-text-3/Packages
В результате видно, что возникает проблема с пробелом в пути ~/.config/sublime-text-3/Installed
Packages и Packages воспринимается как элемент массива.
Как её можно исправить?
Единственное, что пришло в голову, это экранировать пробел:
paths=(
~/.config/sublime-text-3/Installed\ Packages
~/.config/sublime-text-3/Local
~/.config/sublime-text-3/Packages
)
Но результат тот же.
P. S. Если код в песочнице не работает, то нужно очистить куки; по крайней мере у
меня возникали какие-то проблемы в Chrome с этим.
Ответы
Ответ 1
можно поместить в двойные кавычки подстановку массива: for path in "${paths[@]}" да и при обращении к отдельным строкам двойные кавычки не помешают (чтобы опять-таки не столкнуться с разделением на подстроки по пробелам): "${path}"
Комментариев нет:
Отправить комментарий