#bash #shell #loops #for-loop
#bash #оболочка #циклы #цикл for
Вопрос:
Я пытаюсь синхронизировать функцию с двумя массивами файлов. Это то, что я сделал:
path_c=/dir1/*fa
path_b=/dir2/*rem
for i in 1 2 3 4; do echo ${path_c[$i]} ${path_b[$i]}; done
У меня есть 4 файла в каталоге 1 и 4 файла в каталоге 2. Файлы имеют одинаковое имя, но разный формат
У кого-нибудь есть хорошее решение для этой проблемы?
Заранее благодарю вас
Пример: у меня есть следующие файлы
dir1/dog.fa
dir1/cat.fa
dir2/dog.rem
dir2/cat.rem
Предполагается, что они должны работать одновременно с функцией macrame
macrame -a dir1/dog.fa -b dir2/dog.rem
macrame -a dir1/cat.fa -b dir2/cat.rem
Я пытаюсь выполнить цикл, потому что у меня есть сотни файлов в обоих каталогах
Комментарии:
1. Я не понимаю вашего вопроса. Чего вы хотите достичь?
2. Я обновил вопрос, надеюсь, что теперь будет понятнее.
Ответ №1:
Ни одна из переменных не является массивом.
path_c=(/dir1/*fa)
path_b=(/dir2/*rem)
Однако вам, вероятно, не нужны массивы, и вы можете использовать следующее:
for c_file in /dir1/*.fa; do
b_file=/dir2/$(basename "$c_file" .fa).rem
echo "$c_file" "$b_file"
done
Комментарии:
1. Я не могу использовать это, потому что файлы *.rem находятся в другом каталоге, и я не могу их смешать.
2. Извините, я упустил это из виду. Исправит.
3. Это сработало! И теперь я больше понимаю, как работает bash… Спасибо!