如何在脚本的顶部使#!/ bin / foo调用程序?

时间:2013-10-11 13:04:00

标签: bash shell

如您所知,shell脚本在脚本顶部有一个“#!/ bin / bash”,它将脚本结束为shell二进制文件,然后shell将运行该脚本。我想创建一个应该被称为“#!/ bin / foo”的程序,然后它应该读取脚本。但我不知道我该怎么办呢。能帮忙吗?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

  1. 编写一个以#!/bin/echo开头的空脚本(并执行它)以查看shell将传递给程序的参数
  2. 编写一个C程序,在传递给int main(int argc, char *argv[])
  3. 时处理这些参数

答案 2 :(得分:0)

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

#!/bin/cat
content

我使用chmod

为文本文件写入权限
chmod +x test

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

$ ./test
#!/bin/cat
content
$