Использование инкрементирующей переменной в командной строке bash для цикла?

Я использую командную строку bash для цикла, чтобы объединить группу файлов вместе, и я хотел бы добавить добавочную цифру.

Что-то вроде этого:

j=1;for i in *.bak; do echo {$j++: >> files.grp;cat $i >> files.grp; echo }, >> files.grp; done 

Таким образом, вывод будет следующим:

 {1:"file1 contents"},{2:"file2 contents"}, 

  • Извлеките строки с конкретными датами и выполните команду для каждого из них
  • Используйте регулярное выражение, чтобы проверить, имеет ли конкретный каталог папки, начиная с определенного слова
  • Самый эффективный способ сократить резервную копию, которая использует жесткие ссылки
  • Как «найти» несколько файлов и открыть их в vim?
  • bash без учета регистра команд
  • Когда вы должны использовать подоболочки vs `xargs`?
  • Объединить вывод нескольких независимых процессов в другом терминале
  • Как grep файл в точке монтирования smb без использования mount или fstab?
  • 2 Solutions collect form web for “Использование инкрементирующей переменной в командной строке bash для цикла?”

    Что вам нужно сделать:

     j=$(($j+1)) 

    или использовать

     $((j++)) 
     # file1.bak hallo # some other file.bak H?llo* # a!file.bak new! line" 

    Обработанный скриптом:

     j=1 for i in *.bak; do echo "{$((j++)):$(cat "$i")}" >> files.grp done 

    Записывает следующее в files.grp:

     {1:hallo} {2:H?llo*} {3:new! line"} 
    Linux и Unix - лучшая ОС в мире.