Bash - 如何向通过标准输入读取的脚本传递参数

54

我想从标准输入中执行一个脚本,并传递参数给它。有没有办法这样做?

假设我有以下内容:

cat script.sh | bash

我该如何将参数传递给脚本?

我不想这样做:

bash script.sh arguments

也不是这样的:

./script.sh arguments
2个回答

54

在 Linux 上,

cat script.sh | bash /dev/stdin arguments

似乎可以工作。


太棒了!我想不到这个。 - dabest1
43
将脚本.sh的输出作为标准输入,通过-bash选项将参数传递给bash。 - ccarton
很好,那肯定能在任何地方使用,而/dev/stdin可能不行。 - Michael Hoffman
1
@ccarton,您的评论是更好的答案。为了后人着想,您是否考虑将其重新输入为实际答案? - jez
2
既然这是被接受的答案,编辑一下使用 bash -s - 会更好。@MichaelHoffman - rfay
@rfay 我同意这是一个更好的答案,但这是别人的答案,编辑我的回答来复制别人的感觉不对。 - Michael Hoffman

37

谢谢!这对于通过 curl .. | bash -s .. 进行自动设置非常有用。dash 真的需要吗?似乎可以这样工作:cat script.sh | bash -s arguments - Alek
1
在这个上下文中(根据man bash),- 等同于 --,通常用于表示选项的结束。因此,如果你有一个参数,bash 可能会误解为它自己的选项之一,你会想要使用 -- 来消除歧义。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接