Использование инкрементирующей переменной в командной строке 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"}, 

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?
  • как получить различные часы на CLI отдельно от вашей часовой зоны?
  • Доступ к файлу, расположенному с помощью find
  • Удалить строки, содержащие пустые поля
  • В чем смысл чтения -r?
  • Советы по отладке Wi-Fi в командной строке?
  • Что именно происходит, когда за трубой следует командная группировка?
  • Ошибка при поиске несуществующей строки с EDITOR = vi crontab -e
  • Как проверить пароль в Linux?
  • Каковы ваши любимые функции командной строки или трюки?
  • Как копировать измененные файлы при сохранении структуры папок
  • Linux и Unix - лучшая ОС в мире.