Исполняемый файл не ждет завершения загрузки curl - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть исполняемый файл, который должен загрузить zip-файл по ссылке и разархивировать его.

#!/bin/bash

echo “Downloading project resources from Storage...”

if curl -O -J -L https://mylink.com; then
    unzip filename.zip
else

    echo "Something went wrong"
fi;
echo "Done!"

Однако, каким-то образом мой скрипт не ждет, пока curl завершит загрузку, прежде чем разархивировать файл,Что я делаю не так?

Вывод:

MacBook-Pro:~ ej$ /Users/ej/Desktop/untitled\ folder\ 2/Setup ; exit;
“Downloading project resources from Storage...”
unzip:  cannot find or open file.zip, file.zip.zip or file.zip.ZIP.
Done!
logout
Saving session...  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

И, наконец, ни один файл не был загружен или разархивирован внутри папки, в которой был запущен исполняемый файл.

Edit 2:

ls -l выводит следующее после того, как я запускаю команду curl в терминале:

-rwxr--r--@ 1 ej  staff       390  2 Apr 21:42 Setup
-rw-r--r--  1 ej  staff  86368932  2 Apr 22:19 file.zip?alt=media

which bash выводит следующее:

/bin/bash

PS На MacBook предварительно установлен curl?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2019

Предлагает следующие изменения в сценарии:

#!/usr/bin/env bash

echo "Downloading project resources from Storage..."

filename="outfile.zip"

if curl --silent -o "${PWD}/${filename}" -L "https://mylink.com"; then
    unzip "${filename}"
    if [[ -f "${PWD}/${filename}" ]]; then
        echo "Removing the file.."
        rm -f "${PWD}/${filename}"
    fi
else
    echo "Something went wrong"
fi
echo "Done!"

1 голос
/ 02 апреля 2019

Вы можете использовать это:

curl -O -J -L https://mylink.com && unzip filename.zip

это будет файл uzip, если curl выполнится успешно.

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