Вы записываете загруженные данные в файл, поэтому на самом деле ничего не передаете в tar
. Конвейеры полезны только в том случае, если вы хотите, чтобы стандартный вывод одной программы стал стандартным вводом другой. Здесь вы загружаете файл, а затем хотите открыть его с помощью другого инструмента, поэтому каналы бесполезны.
Следующая проблема заключается в том, что ваш $downloaded_file
на самом деле является URL-адресом. Поэтому, когда вы tar -xzvf ${downloaded_file}
на самом деле запускаете tar -xzvf https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz
и это не удастся, поскольку этого файла не существует (это не файл, это интернет-адрес ).
То, что вы хотите сделать, примерно так:
war="/var/www/html"
targetUrl="https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz"
fileName="${targetUrl##*/}"
wget "$targetUrl" -O "$war/$fileName" &&
tar -xzvf "$war/$fileName"
Я не понимаю, почему вариант -P
из wget
может быть здесь уместным, а также зачем вам нужен --transform
из tar
, но если вы должны его использовать, вы можете сделать:
war="/var/www/html"
domain="example.com"
targetUrl="https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz"
wget "$targetUrl" -O "$war/$fileName" &&
tar -xzvf "$war/$fileName" --transform="s,^${targetUrl},${domain},"
Хотя я действительно сомневаюсь, что они вам нужны. Зачем https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz
быть частью путей в архиве mediawiki-1.33.0.tar.gz
?