2

如您所知,shell 脚本在脚本顶部有一个“#!/bin/bash”,它将脚本结束为 shell 二进制文件,然后 shell 将运行它。我想制作一个应该像“#!/bin/foo”这样调用的程序,然后它应该读取 script 。但我不知道我该怎么做。某人可以帮忙吗?

4

3 回答 3

4

#!/bin/fooshebang 运行时/bin/foo,以文件名作为参数运行,例如,如果文件名是bar,那么将运行的命令行是/bin/foo bar. 要在 C 中实现它,请检查main()'s argc(参数计数)是否为1,然后唯一的元素argv将是文件名,因此您可以使用它argv[0]来访问文件名。从那里我猜你会想要fopen()文件,fread()它,并用它做你想做的事。

于 2013-10-11T13:10:24.177 回答
1
  1. 编写一个以 开头的空脚本#!/bin/echo(并执行它)以查看 shell 将传递给您的程序的参数
  2. 编写一个 C 程序,在传递给时处理这些参数int main(int argc, char *argv[])
于 2013-10-11T13:10:53.937 回答
0

你可以使用任何你喜欢的东西。例如,如果我创建一个名为的文本文件test

#!/bin/cat
content

我给文本文件写权限chmod

chmod +x test

现在,我可以执行它,结果是调用 cat 打印文件内容:

$ ./test
#!/bin/cat
content
$ 
于 2013-10-11T13:13:56.610 回答