假设我有脚本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
是您要转换的文件。