C語言和SH指令碼的雜交程式碼

freebus發表於2020-03-12

在網上看到了一個把 C語言和bash雜並起來的例子,這個示子如下所示。在下面這個例子中,我們把指令碼用#if 0這個預編譯給起來,這樣就不會讓其編譯到C語言中了。


1 #if 0

2 echo "Hello from bash!"

3 exit

4 #endif

5 #include <stdlib.h>

6 #include <stdio.h>

7 int main(int argc, char* argv[]) {

8    puts("Hello from C!");

9    return EXIT_SUCCESS;

10 }


下面,讓我看看如果來使用這樣的程式:


1 $ sh test.sh.c

2 Hello from bash!

3 $ gcc test.sh.c -o test

4 $ ./test

5 Hello from C!





你甚至還可以做一個自我編譯,並自我執行的原始碼。如下所示:


1 #if 0

2 file=`mktemp`

3 gcc -o $file $0

4 $file

5 rm $file

6 exit

7 #endif

8 #include <stdlib.h>

9 #include <stdio.h>

10 

11 int main(int argc, char *argv[]) {

12  puts("Hello from C!");

13  return EXIT_SUCCESS;

14 }


執行:


1 $ sh test.sh.c

2 Hello from C!

$


當然,我並不建議你在真正的開發環境中這樣使用,我只不過是在介紹一個比較有趣的用法,僅此而已!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31365439/viewspace-2679794/,如需轉載,請註明出處,否則將追究法律責任。

相關文章