Для цикла работает, но петли дважды

Я запускаю следующий код

for d in ./*/ ; do (cd "$d" && dcm2nii -ny -ry -xy -gn ../*/dicom/); done; 

чтобы выполнить программу dcm2nii во всех подпапках ./*/ (все они называются «dicom») и сохранить вывод в те же подпапки. Цикл работает, но он запускается дважды, создавая повторяющиеся выходные файлы в каждой поддиректории «dicom». Интересно, что если я укажу абсолютные пути в обоих местах, но с подстановочным знаком * intact, чтобы включить все папки в родительский каталог, цикл выполняется только один раз по желанию. Как заставить цикл работать только один раз с использованием относительных путей?

One Solution collect form web for “Для цикла работает, но петли дважды”

Думаю, у вас было 2 подпапки во время тестирования / выполнения вашей команды.

Ваш код:

 for d in ./*/ ; do (cd "$d" && dcm2nii -ny -ry -xy -gn ../*/dicom/); done; 
  • сначала входит в подпапку $d
  • затем dcm2nii ... on ../*/dicom , что переводится как: вложенная папка «dicom» всех папок суперпапки
  • затем переходит во вторую подпапку и делает то же самое

Попробуй это:

 for d in ./*/ ; do (cd "$d" && dcm2nii -ny -ry -xy -gn dicom/); done; 

или (возможно):

 dcm2nii -ny -ry -xy -gn ../*/dicom/ 
  • Использование ссылки на строковую переменную bash в sed
  • Проверьте, содержит ли переменная оболочки абсолютный путь
  • как использовать команду eval для печати значения параметра
  • Скрипт для переключения дорожки для ноутбука
  • Поймать количество синтаксических ошибок в сценарии оболочки
  • удалить новые строки
  • установка псевдонима для Java9
  • Что такое код возврата 1 для git-rebase? Какие другие ценности он мог бы вернуть?
  • Как получить имя ближайшей интерактивной оболочки предка из сценария?
  • как редактировать двуязычный текст с помощью скриптов?
  • Сценарий добавления Unix
  • Interesting Posts

    Linux newbie: Как использовать Jack? Как работает Linux?

    Что вызывает паузу во время зонда системного устройства?

    убить процесс на удаленной машине, когда машина застряла

    Самый быстрый инструмент `uniq` в linux

    Параметры IP удалены в Ubuntu 16.10

    Создание последовательной консоли для подключения последовательного USB-устройства

    Скрипт Bash, распаковать пароль

    Почему моя клавиатура вводит неправильные буквы?

    Рекомендуется использовать папку / tmp для резервного копирования?

    Почему команда «ls» * «" ничего не показывает?

    Как установить TazPkg в SliTaz Linux

    Почему выходные данные bash вместо выполнения, когда сценарий транслируется?

    Sendmail не может найти локальных пользователей (с прописными буквами)

    Имея хост с системой ZFS, как сделать его доступным для других хостов в локальной сети?

    Galera + systemd: wsrep_notify_cmd терпит неудачу с sudo (невозможно изменить в sudoers gid: операция не разрешена)

    Linux и Unix - лучшая ОС в мире.