Intereting Posts
Является ли PowerVM полной операционной системой? (И другие разъяснения.) Почему эхо << EOF… EOF не работает Как получить последнюю папку (отсортированную по алфавиту в порядке убывания и сопоставление шаблона) с помощью ls / find / etc? Файл asound.conf поврежден, не позволяет воспроизвести правильную звуковую карту, в результате она продолжает терпеть неудачу Невозможно установить mysql-server-5.5 / следующие пакеты имеют неудовлетворенные зависимости Какие файловые системы можно сократить в 2011 году? Возможно ли запустить xen внутри VirtualBox? Запуск программы при запуске в поисках решения для «настольного зума» compiz для gnome Ubuntu 18.04 Какой дистрибутив для старого HP (Celeron / 384MB) Почему Linux сканирует мой cdrom при загрузке? ключ eCryptfs в изображении ядра или initramfs Чтобы не авторемонтировать что-то Может ли сращиваться () / tee () работать с сокетами, а не только с трубами? Как заставить gpg найти gpg-agent

Расширение строки расширения скобки, содержащейся в переменной для использования в цикле for?

Как полный новичок для bash, у меня есть следующий скрипт:

FOOS=foo{1..5} for i in `echo $FOOS` do echo bar done 

Теперь я (думаю, я) понял, что расширение скобки работает только с литералами – отсюда и эхо – но все это, похоже, печатает всего одну bar на консоли. Почему (расширение строки / скобки не работает)?

Я ожидаю, что это произойдет:

  1. Назначьте строку ( foo{1..5} ), представляющую расширение для переменной FOOS
  2. замените $FOOS , так что я в основном получил for i in 'echo foo{1..5}' do (похоже, я не могу избежать обратных тиков здесь)
  3. выполнить эхо, поэтому теперь у меня есть for i in foo1 foo2 foo3 foo4 foo5 do
  4. выполнить для, печатать bar пять раз до выхода консоли
  5. Не получить только один bar напечатанный на экране, как единственный выход 🙂

1.

 FOO=$(echo foo{1..5}) 

но лучше использовать массив

 FOO=(foo{1..5}) 

2.

 echo ${FOO[*]} 

4.

 for i in {1..5} do echo bar done 

или

 for i in $(seq 5) do echo bar done