Как запустить команду для каждого номера в диапазоне

Я хочу сделать что-то вроде

specmd file5.awe specmd file6.awe specmd file7.awe specmd file8.awe specmd file9.awe specmd file10.awe specmd file11.awe specmd file12.awe 

Есть ли хороший способ сделать это? Лучший способ, о котором я могу думать, – это что-то вроде

 ruby -e "10.upto(15){|i| puts i}" | xargs -I {} specmd file{}.awe 

Который, очевидно, не очень хороший способ сделать это, поскольку он зависит от рубина и чувствует, что в этом случае рубин должен быть ненужным.

Примечание: есть больше файлов (например: file4.awe , file13.awe ), которые мне не нужны, поэтому любое подталкивание (возможно?) Не будет делать то, что я хочу.

6 Solutions collect form web for “Как запустить команду для каждого номера в диапазоне”

В bash вы можете создавать циклы, используя встроенную команду для итерации по диапазону:

 for i in {5..12} do specmd file${i}.awe done 

Есть больше вариантов для других подобных ситуаций, я оставлю здесь ссылку для этого.

http://www.cyberciti.biz/faq/bash-for-loop/

 for f in file[5-9].awe file1[012].awe do : stuff with "$f" files done 

… не все шары равны.

иначе вы можете сделать:

 x=4 while [ 13 -gt "$((x+=1))" ] do : stuff with "file$x.awe" done 

… который имеет преимущество генерации своего итератора во время итерации и работает по умолчанию практически в любой скриптовой оболочке (как и в случае с глобусами) .

С помощью zsh вы можете упростить команду с помощью специального цикла «loop»:

 n=5; m=12; repeat $((m-n+1)) specmd file$((n++)).awe 

Я знаю, что это старый вопрос, но я не мог сопротивляться.

Нет для цикла требуется, нет необходимости в цикле, просто чистая строка командной строки:

 echo file{5..12}.awe | xargs -n1 specmd 

Использование C-стиля для цикла в bash или ksh93 :

 for ((i=5;i<=12;++i)); do specmd "file$i.awe"; done 

Использование расширения скобки:

 for f in file{5..13}.awe; do specmd "$f"; done 

Или, с xargs , в том же виде, что и у вас:

 printf '%s\n' {5..13} | xargs -I {} specmd file{}.awe 

Больше альтернатив для zsh

 autoload zargs # best in ~/.zshrc zargs -n1 file{5..12}.awe -- specmd 

или:

 for f (file{5..12}.awe) specmd $f 
  • Как изменить цвет разных файлов в ls
  • Вставка имеет нечетное поведение в оболочке
  • `sed: -e выражение # 1, char 4: неизвестная команда:` но окончательные строки в порядке
  • Как отменить `set -x`?
  • Как возобновить приостановленную оболочку?
  • Как использовать nohup и закрепить его в одной команде
  • lftp: войти, поместить файл в удаленный каталог и выйти из одной команды: правильная цитата
  • Команда bash multi line с комментариями после символа продолжения
  • Использовать root для создания корневой оболочки для другого пользователя
  • Как удалить все в каталоге?
  • утечка памяти с помощью сценария оболочки и tty
  • Interesting Posts

    Загрузочный диск с несколькими изображениями Grub 2 загружает некоторые изображения, но перезапускается на других

    Vim – Cursorline включается после сохранения удаленного файла

    Моя команда Ping, кажется, никогда не заканчивается. Означает ли это, что это suceeeding?

    сравнение производительности драйверов e1000 и virtio-pci

    Способ перечислить все запущенные шины сеанса dbus?

    Отсутствие пробела в выводе `ps` около EOL

    Imagemagick изменяет размер изображения с ограничением соотношения высоты и размера

    Добавление текста после определенной строки файла в скрипте Bash

    xrandr: не удается найти режим при запуске

    Bash заменить символы на выходе

    Как отключить автоматическое отображение с помощью монитора DP

    Установщик Debian с Backported Kernel

    Настройка значка заголовка Kde, добавление значка изменения размера

    как скопировать 10 файлов с одной Linux-машины на другую, используя ssh-файл без ввода пароля 10 раз

    Что такое коммутационные среды на терминале системы?

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