从终端将bash的参数传递给bash

时间:2015-04-30 06:21:19

标签: bash

我们说我有脚本convertToPNG.sh

convert $1 output.png

我可以通过终端$ converToPNG img.jpg拨打电话。

但是,如果我拥有的是字符串"convert $1 output.png",我想通过在一行中传入一个参数来执行它?

我不想将字符串保存为文件,然后使用传入的参数运行脚本。是不是有一种更简单的方法来管道参数以替换$1

2 个答案:

答案 0 :(得分:1)

您应该使用eval。它需要一个字符串并执行它。例如:

eval "convert $1 output.png"

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

编辑:如果你想要的是用img.gif替换每个$1,请尝试以下方法(单个quopt:

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

答案 1 :(得分:1)

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

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

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