Ruby вывод в качестве ввода для системной команды - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь загрузить тонну файлов через gsutil (Google Cloud). Вы можете передать список URL-адресов для загрузки:

Вы можете передать список URL-адресов (по одному на строку) для копирования в stdin вместо аргументов командной строки, используя параметр -I. Это позволяет вам использовать gsutil в конвейере для загрузки или скачивания файлов / объектов, сгенерированных программой, таких как:

some_program | gsutil -m cp -I gs://my-bucket

Как я могу сделать это из Ruby, от в программе я имею ввиду? Я попытался вывести их, но, похоже, это не сработало.

urls = ["url1", "url2", "url3"]
`echo #{puts urls} | gsutil -m cp -I gs://my-bucket`

Есть идеи?

Потенциальный обходной путь - сохранить URL-адреса в файле и использовать cat file | gsutil -m cp -I gs://my-bucket, но это похоже на излишество.

1 Ответ

2 голосов
/ 02 апреля 2020

Можете ли вы попробовать echo '#{urls.join("\n")}' Если вы поставите puts, он возвращает ноль, а не строку, которую вы хотите вернуть. Сбой интерполяции по той же причине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...