2016-08-17 2 views
1

У меня есть сценарий bash, который я пытаюсь собрать, который находит все изображения в папке, а затем помещает имена этих файлов в предварительно отформатированный CSV. У меня на самом деле есть более сложные части, которые он выяснил и хорошо работает ... Я застрял в действительно основной части. У меня есть переменная, которую мне нужно увеличивать для каждого найденного файла, достаточно просто? Я пробовал кучу разных вещей и не могу, чтобы жизнь меня заставила его увеличиваться. Вот сценарий, я работаю с:Приращение переменной в команде Bash

отредактирован показать меньше Context

i=0 
find "$(pwd)" -maxdepth 1 -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}' | grep -o -E '[^/]*$' | sed -e "s/^/$((++i))/" > "$(pwd)/inventory-$(date +%Y%m%d)-$(date +%I%M).csv" 

Я пытался приращением его i++, i=+1, i=i+1, а также поставить знак доллара перед различными итерациями i variable ... ничего, похоже, фактически не увеличивает переменную. Мое лучшее предположение состоит в том, что это не настоящий цикл, поэтому он не сохраняет изменения в переменной? Любое руководство будет принята с благодарностью!

+2

Пожалуйста, сделайте свой пример более минимальным, уменьшив его, чтобы отображать только проблему, а не весь контекст вокруг нее. – merlin2011

+0

Извините, я действительно не очень хорошо знаком с Bash, и я не хотел вырезать части, которые были релевантными, я думаю, что теперь я сократил это до того места, где вы увидите ту часть, с которой я борюсь без вынимая слишком много контекста того, где это происходит. – techiechic

ответ

0

$((++i)) Выполняется вашей оболочкой. Но оболочка выполняет эту строку только один раз. Эта строка не может делать то, что вам нужно.

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

Смежные вопросы