Выполнить curl в bash скрипте через QProcess
Есть bash скрипт, который должен скачивать архив, распаковывать его и удалять. В скрипт передается индекс файла, который нужно скачивать. Выглядит следующим образом:
curl -o file.zip http://any-dev.com/get/$1 && \
unzip file.zip && \
rm file.zip
Скрипт лежит в ресурсах Qt (.qrc). И запускается плюсовым кодом:
const QString param(QString::number(value));
if (!QFile::exists(":/screepts/screept.txt"))
qDebug() << "File not exists" << endl;
QFile file(":/screepts/screept.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
qDebug() << "File not open" << endl;
const QString command = QString(R"(%1 %2)")
.arg(QString(file.readAll()).replace("\n", " "))
.arg(param);
qDebug() << command <<endl;
QProcess::startDetached("bash", {"-c", command});
Плюсовый код по запуску скрипта работает нормально. Проблемы видимо в самом скрипте. В консоле ошибки:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 6607 0 6607 0 0 49074 0 --:--:-- --:--:-- --:--:-- 49305 /usr/bin/bash: line 1: unzip: command not found
Пример вывода дебага:
"curl -o file.zip http://any-dev.com/get/$1 && \\ unzip file.zip && \\ rm file.zip 200"
Ответы (1 шт):
В скрипт передается индекс файла, который нужно скачивать. Выглядит следующим образом:
curl -o file.zip http://any-dev.com/get/$1 && \ unzip file.zip && \ rm file.zip
не нужно использовать вместе && \, для переноса записи здесь и одного && будет достаточно.
у вас вылазит ошибка
/usr/bin/bash: line 1: unzip: command not found
сам unzip на скока я понял у вас установлен, но из за того что перенос строки \n после \ вырезается ...replace("\n", " ")) то следующая команда уже не отработает как надо.
пример:
$ echo 111 &&
echo 444
111
444
будет работать как и
$ echo 111 && \
echo 444
111
444
но если в одной строке, то
$ echo 111 && \ echo 444
1111
bash: echo: команда не найдена