Создание каталогов внутри каталога из значений переменных для перенаправления вывода из sed

-eq— оператор числового сравнения. Используйте=(либо =, либо ==с[[...]])для строк.

Вы можете найти более подробную информацию в документации, man bash.

Другой инструмент, который может быть полезен,https://shellcheck.net

0
15.01.2021, 19:10
1 ответ

Похоже, что в этом фрагменте кода много мелочей, которые могут вызвать путаницу.

Во-первых, как написано, $kиногда может начинаться с точки (, например. .1, .2и т. д. ), что в Unix определяет каталог как скрытый каталог. Первым делом я бы проверил, созданы ли эти каталоги как скрытые:

ls -A

Во-вторых, вы создаете ${k}_${NaMeiFFiLe}в родительском каталоге, а НЕ в новых каталогах, которые вы создаете. Опять же, поскольку $kво многих случаях начинается с точки, он может быть скрыт в родительском каталоге. Учитывая поток вашего кода, я думаю, вы хотели сохранить файл в новых подкаталогах -. Если это правда, это будет выглядеть примерно так (Я заменил регулярное выражение на ...для упрощения):

sed -e '...' "${NaMeoFFiLe}" > "${NaMeDiR}/${k}/${k}_${NaMeoFFiLe}"

И, как примечание, mkdirимеет флаг опции -p, который может создавать полные иерархии каталогов, включая подкаталоги -, что означает, что вам не нужен внешний циклmkdir:

mkdir -p "${NaMeDiR}/${k}"

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

2
18.03.2021, 22:36

Теги

Похожие вопросы