При выполнении docker exec -it [container_id] /bin/bash
:
я запустил следующее:
Предположим, папка test/data
существует.
root@6f200d5b9691: for file in $(aws s3 ls s3://foo-bucket | awk '{print $NF}') ; do aws s3 cp foo-bucket/${file} test/data && tar -xzf test/data/${file} -C test/data/ ; done
Для этого, Я получил все файлы по соответствующему пути и извлек!
Однако, когда я делаю то же самое через оболочку таким образом:
root@6f200d5b9691: /bin/bash -ac "for file in $(aws s3 ls s3://foo-bucket | awk '{print $NF}') ; do aws s3 cp foo-bucket/${file} test/data && tar -xzf test/data/${file} -C test/data/ ; done"
Я получаю странную ошибку, такую как:
/bin/bash: -c: line 1: syntax error near unexpected token foo1.tar.gz'
/bin/bash: -c: line 1: foo1.tar.gz ; do aws s3 cp s3://foo-bucket/foo1.tar.gz 'test/data' && tar -xzf 'test/data/foo1.tar.gz' -C 'test/data/' ; done'
Есть идеи, почему это происходит? Что я делаю не так?
Второй вариант запуска через /bin/bash -ac "[commands here]"
важен, так как я хочу использовать его с помощью такой команды, как:
docker-compose run [service_name] /bin/bash -ac "[...]"