#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}"
Комментариев нет:
Отправить комментарий