构建简单的shell脚本,执行作为参数传递的程序

时间:2011-04-24 09:34:34

标签: c linux bash shell

我正在构建一个程序,它有助于C程序的内存调试。我打电话给

execlp("gnome-terminal","gnome-terminal","-e",command,(char*)0);

打开一个新的终端窗口,运行要调试的程序。我这样做是为了没有将调试信息与用户程序输出混合在一起。因为我需要在运行用户程序之前设置环境变量,所以命令var实际上是shell脚本的名称,我将用户程序作为第一个arg传递。

这是我的剧本:

#!/bin/bash

export LD_PRELOAD="./mylib.so"
$1

这适用于没有参数的程序,但如果用户还为他的程序提供args会发生什么?

例如,我希望像我那样调用我的脚本:

myScript.sh usersProgram arg1 arg2 etc

如何在脚本中正确运行用户程序并将所有参数传递给它?

谢谢

2 个答案:

答案 0 :(得分:5)

使用"$@",它将正确处理所有参数。

答案 1 :(得分:3)

假设编程的args始终从第二个arg开始,我建议这样做:

#!/bin/bash

PROG=$1
shift
$PROG "$@"

实际上,只指定“$ @”而不是上面的三行也可以。但是这样,你可以在实际执行之前轻松地根据$ PROG进行一些操作。