【发布时间】:2010-04-09 10:48:29
【问题描述】:
我正在尝试编写一个 bash 脚本,它“包装”用户想要调用的任何内容(及其参数),在实际调用它之前获取一个固定文件。
澄清一下:我有一个“ConfigureMyEnvironment.bash”脚本,必须在启动某些可执行文件之前获取该脚本,所以我想要一个“LaunchInMyEnvironment.bash”脚本,您可以使用如下:
LaunchInMyEnvironment <whatever_executable_i_want_to_wrap> arg0 arg1 arg2
我尝试了以下 LaunchInMyEnvironment.bash:
#!/usr/bin/bash
launchee="$@"
if [ -e ConfigureMyEnvironment.bash ];
then source ConfigureMyEnvironment.bash;
fi
exec "$launchee"
我必须使用“launchee”变量来保存 $@ var,因为在执行 source 之后,$@ 变为空。
无论如何,这不起作用,失败如下:
myhost $ LaunchInMyEnvironment my_executable -h
myhost $ /home/me/LaunchInMyEnvironment.bash: line 7: /home/bin/my_executable -h: No such file or directory
myhost $ /home/me/LaunchInMyEnvironment.bash: line 7: exec: /home/bin/my_executable -h: cannot execute: No such file or directory
也就是说,“-h”参数似乎被视为可执行文件名的一部分,而不是作为参数......但这对我来说没有任何意义。 我也尝试使用 $* 而不是 $@,但没有更好的结果。
我做错了什么?
安德烈亚。
【问题讨论】: