现在我有这样的一句台词:
curl -fsSL http://git.io/vvZMn | bash
它正在下载脚本并将其作为标准输入文件传递给 bash。我想使用附加参数运行此脚本print
。
也许是这样的?
curl -fsSL http://git.io/vvZMn | bash -- print
但这行不通。
答案1
我相信您正在寻找的是-s
选择。使用-s
,您可以将参数传递给脚本。
作为一个虚拟示例来说明这一点:
$ echo 'echo 1=$1' | bash -s -- Print
1=Print
在这里,您可以看到 stdin 上提供的脚本被赋予了位置参数Print
。您的脚本需要一个-u UUID
参数,也可以容纳:
$ echo 'echo arguments=$*' | bash -s -- -u UUID print
arguments=-u UUID print
所以,就你而言:
curl -fsSL http://git.io/vvZMn | bash -s -- print
或者,
curl -fsSL http://git.io/vvZMn | bash -s -- -u UUID print
正如斯蒂芬·哈里斯(Stephen Harris)指出的那样,下载脚本并在看不见的情况下执行它是一个安全问题。
答案2
如果您的系统有/dev/stdin
,您可以使用
$ echo 'echo 1=$1' | bash /dev/stdin print
1=print
做不是做这个:
$ echo 'echo 1=$1' | bash /dev/stdin -- print
1=--
如果您想使用--
,请执行以下操作:
$ echo 'echo 1=$1' | bash -- /dev/stdin print
1=print