-eq
— оператор числового сравнения. Используйте=
(либо =
, либо ==
с[[...]]
)для строк.
Вы можете найти более подробную информацию в документации, man bash
.
Другой инструмент, который может быть полезен,https://shellcheck.net
Похоже, что в этом фрагменте кода много мелочей, которые могут вызвать путаницу.
Во-первых, как написано, $k
иногда может начинаться с точки (, например. .1
, .2
и т. д. ), что в Unix определяет каталог как скрытый каталог. Первым делом я бы проверил, созданы ли эти каталоги как скрытые:
ls -A
Во-вторых, вы создаете ${k}_${NaMeiFFiLe}
в родительском каталоге, а НЕ в новых каталогах, которые вы создаете. Опять же, поскольку $k
во многих случаях начинается с точки, он может быть скрыт в родительском каталоге. Учитывая поток вашего кода, я думаю, вы хотели сохранить файл в новых подкаталогах -. Если это правда, это будет выглядеть примерно так (Я заменил регулярное выражение на ...
для упрощения):
sed -e '...' "${NaMeoFFiLe}" > "${NaMeDiR}/${k}/${k}_${NaMeoFFiLe}"
И, как примечание, mkdir
имеет флаг опции -p
, который может создавать полные иерархии каталогов, включая подкаталоги -, что означает, что вам не нужен внешний циклmkdir
:
mkdir -p "${NaMeDiR}/${k}"
Наконец, в качестве более субъективного примечания, я бы предложил переосмыслить то, как вы пишете имена переменных с большой буквы, потому что это невероятно сложно читать для рецензентов кода... Я думаю, что некоторые из других комментаторов уже нашли некоторые потенциальные опечатки, которые можно было бы избежать с помощью лучшего соглашения об именах