1

У меня есть код, который читает текстовый файл и должен прочитать строки из него в команду. Затем вывод этой команды также должен быть прочитан построчно в другую команду. Мой внешний цикл работает (я проверил его с помощью эха), но мой вложенный цикл не:

#!/bin/bash

while read p; do

    folder="$(aws s3 ls s3://a-bucket/users/ --recursive | grep ${p} | cut -c 32-)"

    while read -r line
    do
        aws s3 cp s3://a-bucket/"$line" 'c:/users/basud/desktop/testerData' --recursive
    done <<< "$folder"

done < testIDs.txt

Вывод первой строки, которая читается в "папку", выглядит следующим образом для каждой строки testIDs.txt:

users/3e8c95b4-c5ee-4edc-954e-6d988d30557e/111BEF99-5AB6-486A-ABD5-A4682CE0D491-LEFT.zip
users/3e8c95b4-c5ee-4edc-954e-6d988d30557e/111BEF99-5AB6-486A-ABD5-A4682CE0D491-RIGHT.zip

Я хочу передать каждую строку "папки" в команду aws после «a-bucket/», чтобы добавить к имени пути. Я не получаю выходной. Ваша помощь очень ценится.

1 ответ1

0

Ваш код должен работать

$ folder="$(echo 1; echo 2)"; while read -r line; do echo "line: $line"; done <<< "$folder"
line: 1
line: 2

Но в вашем случае я бы использовал это:

aws s3 ls s3://a-bucket/users/ --recursive | grep ${p} | cut -c 32- |
while read -r line
do
    aws s3 cp s3://a-bucket/"$line" 'c:/users/basud/desktop/testerData' --recursive
done 

Чтобы отладить ваш оригинальный скрипт (или любой другой), запустите его с помощью bash -x .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .