我正在构建一个程序,它有助于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
如何在脚本中正确运行用户程序并将所有参数传递给它?
谢谢
答案 0 :(得分:5)
使用"$@"
,它将正确处理所有参数。
答案 1 :(得分:3)
假设编程的args始终从第二个arg开始,我建议这样做:
#!/bin/bash
PROG=$1
shift
$PROG "$@"
实际上,只指定“$ @”而不是上面的三行也可以。但是这样,你可以在实际执行之前轻松地根据$ PROG进行一些操作。