脚本
C++ 的脚本化:
自动编译和运行程序
原文出自这里: 神奇,C代码竟然能当成shell脚本一样“直接”执行!
但是很可惜,作者虽然很有探索精神,但是由于细节不到位,导致后来的代码冗余很多。
比如 shell 脚本第一行开头并没有严格的规定,写一个 “#!”只是为了指定解释器,而大部分linux发行版都是默认 bash 的。
这意味这脚本是从上向下执行的。使用绝对路径定位时,连续的 “//” 是被看作一个的,也就是说
“/usr/bin/bash” 和 “//usr/bin/bash” 是相同的
而第二种形式正是 C++ 的行注释
如此,得到:
//usr/bin/gcc -o main "$0" && ./main &&exit
#include<stdio.h>
int main(){
printf("hello, world");
return 0;
}
命令如果不放到一行的话,每一行都需要指定路径:
//usr/bin/gcc -o main "$0"
//`pwd`/main && exit
#include<stdio.h>
int main(){
printf("hello, world");
return 0;
}
由于 exit 是 bash 的内建命令,因此只能和带路径的命令放在同一行