【问题标题】:howto run a bash compressed script?如何运行 bash 压缩脚本?
【发布时间】:2013-11-11 22:05:10
【问题描述】:

有一种方法可以直接运行带有“参数”的压缩 bash 脚本,而无需将其解压缩到文件中然后运行解压缩的文件?

例如:我需要使用一些给定的参数执行 setup-mysql gzip 压缩脚本:“-n”、“wordpress”、“locahost”,而无需先解压缩脚本然后执行。

我正在寻找的是在下面的命令中替换单词 MAGIC...:

gzip -d --stdout /usr/share/doc/wordpress/examples/setup-mysql.gz | MAGIC... -n wordpress localhost

【问题讨论】:

  • 您正在寻找xargscat
  • @arkascha 也许 xargs 可以做到,但我未能附加脚本的参数
  • @janos 不,我只是想动态执行一个已经压缩的脚本,而不是在命名文件上解压缩它然后执行这个文件。

标签: bash gzip


【解决方案1】:

试试这个:

gzip -d --stdout file.gz | bash -s -- "-n wordpress localhost"

一点解释:使用bash -s,您是在告诉bash 将stdin 作为命令处理。双破折号意味着后面的所有内容都将作为参数传递(单破折号似乎是等价的,检查man bash)。

如果你没有要传递的参数,你可以这样做

gzip -d --stdout file.gz | bash

另一种选择是:

gzip -d --stdout file.gz | bash /dev/stdin "arguments"

【讨论】:

  • ... bash -s -- -n wordpress localhost 会更好,这样脚本会分别查看每个参数,而不是单个单词。
  • @jlhonora,认为,我在寻找什么,但为什么你说这取决于机器?
  • @Zskdan 我终于放弃了这条评论,因为我无法用任何参考资料来支持它。我只是认为'/dev/stdin' 在某些机器和 linux 发行版中可能不存在或不可读,但似乎并非如此。
  • @jlhonora bash 如果这些文件实际上并不存在于文件系统中,则会在内部实现这些别名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2011-01-30
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多