我想编写一个调用已编译可执行文件的 bash 脚本(我是计算机科学的初学者)。但是,我想在调用中隐藏实际的文件路径。这是我目前拥有的功能:
function comprun()
{
local source_file=$1
local args=$2
g++ -Wall -Wextra -Wconversion "$source_File" -o "$source_file.x";
if [ $? -eq 0 ]; then
echo -e "Running $source_file.x PARAM: $args\n==============\n";
if [ -z "$args" ]; then
./$source_file.x;
else
./$source_file.x $args;
fi
fi
}
这似乎符合我的要求,但有一个问题:在标题后,您可以看到“正在运行...=====”,它会打印出可执行文件的调用。我不确定这是不是我的错误,或者 BASH 是否没有隐藏文件调用,但如果是后者,有没有办法可以隐藏它,这样它就不会显示为(假设文件是 xc,参数为 1 2):
Running x.c.x PARAM: 1 2
==========================
./x.c.x 1 2
任何帮助都非常感谢,谢谢。我知道我的其他方法可能很愚蠢或不起作用,但如果可能的话,我更愿意自己修复这些问题。目前这是我最关心的事情。感谢您的任何帮助。
注意:这不是家庭作业。我只是在摆弄它,仅此而已。
答案1
抱歉。我没有仔细阅读笔记,上面写着:argv[0] == 程序名称字符串。因此,printf("%s %s %s\n", argv[0], argv[1], argv[2]);
从技术上讲,它完全按照我的意愿运行。感谢你们提供这个论坛来提问,尽管我的问题很愚蠢 :P