Обычно это - a bash
сценарий, куда Вы помещаете архив своих файлов в конце файла. Вы добавляете md5
хешируйте, чтобы проверить, был ли файл загружен правильно, и добавьте некоторые операции в начале файла для развертывания архива.
Править: пример с программой uudecode.
Попробуйте следующее:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Это запустит curl
1 раз и grep для вхождений string1
или string2
.
Если это разные переменные, немного измените тактику. Захватите вывод curl
, а затем grep
.
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
Вы также можете сохранить результаты в массиве вместо отдельных переменных.
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
С этим немного сложно справиться, если ваши результаты из grep могут не возвращать результаты, поскольку результаты из «string2» могут быть первым или вторым элементом в массиве, но я предоставляю его здесь так же, как демонстрация подхода.
Еще один метод, который использует команду read
вместе с подстановкой процесса ( <(..cmd ..)
).
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
Это снова может быть сложно, если поиск «строка1» ничего не возвращает, в результате чего любые совпадения для «строка2» отображаются в $ foo1
. Кроме того, этот подход имеет тенденцию быть менее переносимым, чем подход №2 или №3, описанный выше.
read var1 var2 <<CURLSED
$(curl $url | sed -nr 's/(regx1)\|(regx2)/"\1"'"$IFS"'"\2"/p')
CURLSED
А если серьезно, парень, есть миллион способов снять шкуру с этой кошки.