将参数从终端管道到 bash 中



假设我有脚本convertToPNG.sh

convert $1 output.png

我可以通过终端$ converToPNG img.jpg调用它。

但是,如果我只有字符串"convert $1 output.png",并且我想通过在一行中传递参数来执行它呢?

我不想将字符串另存为文件,然后使用传入的参数运行脚本。难道没有更简单的方法可以通过管道在$1中替换参数

您应该使用 eval .它接受一个字符串并执行它。例如:

eval "convert $1 output.png"

但请注意,它会执行任何字符串,因此您应该仔细验证您的$1参数,否则任何人都可以在您的系统中执行任何命令。

编辑:如果您想要用img.gif替换每个$1,请尝试以下操作(单量子:

bash -c 'convert $1 output.png' 'ignore' 'img.gif'

这是一个奇怪的用例,但如果你真的想要,你可以定义你的函数并将参数全部传递给一行:

$ myconvert(){ convert "$1" output.png; }; myconvert whatever.gif

whatever.gif是您要转换的文件。

相关内容

  • 没有找到相关文章

最新更新