如何将参数传递给下载的脚本

时间:2020-10-10 21:04:25

标签: linux bash github

我无法将参数(要下载的URL)传递给脚本。

我的目标是创建用于下载和安装应用程序的部署脚本。 我运行的脚本:

curl url_GitHub | bash -s url_download_app

GitHub上的脚本:

#! /bin/sh
url="$2"
filename=$(basename "$url")
workpath=$(dirname $(readlink -f $0))
curl $url -o $workpath/$filename -s
sudo dpkg --install  $workpath/$filename

据我了解,它不会传递URL来将应用程序下载到URL =“ $ 2”变量。

如果我在本地运行GitHub脚本,并传递URL下载该应用程序,则该应用程序将成功执行。 像这样:

bash install.sh -s url_download_app

请帮助=)

3 个答案:

答案 0 :(得分:0)

-s似乎是供下载的脚本使用的选项。但是,它也是bash接受的 选项,所以我认为您想要的是

curl url_GitHub | bash -s -- -s url_download_app

答案 1 :(得分:0)

以下内容如何(使用process substitution):

bash <(curl -Ss url_GitHub) url_download_app

我使用以下脚本进行了概念验证:

$ cat /tmp/test.sh 
#!/bin/bash
echo "I got '$1'"
exit 0

运行它会得到:

$ bash <(cat /tmp/test.sh) "test input argument"
I got 'test input argument'

答案 2 :(得分:0)

由于GitHub上的脚本使用$ 2,我们应该将其作为第二个参数传递:

curl url_GitHub | bash -s _ url_download_app

_ url_download_app将被传递到GitHub上的脚本。