#shell #amazon-s3
#оболочка #amazon-s3
Вопрос:
Я использую сценарии оболочки и хочу получить список файлов из корзины AWS S3, а затем выполнить цикл for на основе количества файлов, присутствующих в объекте list.
Вот мой код для получения файлов из корзины S3 в сценарии оболочки:
S3_files=$(aws s3 ls s3://s3_bucket_path/ | awk '{print $4}')
S3_files
переменная принимает список файлов как целую строку, поэтому не может выполнять итерацию с использованием цикла. Цикл выполняется только один раз, поскольку он рассматривает список файлов как строку, и выполняется только один раз. Ниже приведен мой код:
for i in "${S3_files[@]}"
do
{
echo "$i"
}
done
Итак, я хочу понять, как мы можем выполнить итерацию, используя цикл, основанный на общем количестве файлов.
Любая помощь приветствуется. Большое спасибо!
Комментарии:
1. попробуйте
S3_Files=( $(aws ... ) )
. Если в имена файлов встроены символы пробела, это тоже не сработает. Удачи.2. К вашему сведению, если вам нужны только имена файлов, вы используете:
aws s3api list-objects --bucket my-bucket --query Contents[].[Key] --output text