這 #!
字符形成一個幻數。 我們將這些幻數嵌入到 UNIX/Linux 操作系統下的任何腳本中,以告訴內核要執行什麼解釋器,以讀取我們的腳本。 像 Linux shell、Python、Perl 和 R 解釋器。 您可能已經註意到所有 Linux shell 和 Perl/python 腳本都以以下行開頭:
#!/bin/bash
或者
#!/usr/bin/env python
或者
#!/usr/bin/env perl
或者
#!/usr/bin/env Rscript
現在我們將編寫一個 Python 語言的程序文件。 我們可以通過直接調用解釋器來執行該程序,而無需添加如下所示的 shebang 行。
蟒蛇腳本
import sys
def greeting(name):
sys.stdout.write("Hello" + name + "n")
name = "Omar"
greeting(name)
為了執行代碼,我們會提到 python
在文件名之前。
python python_script.py
Output
Hello Omar
我們還將為 R 語言編寫一個程序文件。 我們可以通過直接調用解釋器來執行該程序,而無需添加如下所示的 shebang 行。
r_script
print("hello world")
為了執行代碼,我們會提到 Rscript
在文件名之前。
Rscript r_script.R
Output
"hello world"
如何製作可執行文件
要製作可執行文件,我們應該添加 shebang 行 #!/usr/bin/python
到腳本的頂部並將文件的模式更改為可執行。
蟒蛇腳本
#!/usr/bin/python
import sys
def greeting(name):
sys.stdout.write("Hello" + name + "n")
name = "Omar"
greeting(name)
要使文件可執行,請鍵入以下命令。
chmod +x python_script.py
現在我們可以運行這個文件,它會被 python 解釋。
./python_script.py
Output
Hello Omar
大型計算機集群
路徑 /usr/bin/python
可能適用於大多數默認系統,但可能不適用於大型計算機集群等。 所以我們將使用該程序 env
找到合適的中介。
#!/usr/bin/env python
import sys
def greeting(name):
sys.stdout.write("Hello" + name + "n")
name = "Omar"
greeting(name)
我們也可以對任何像 Rscript 這樣的程序做同樣的事情。
#!/usr/bin/env Rscript
print("hello world")
另請閱讀:
- 70 個 Shell 腳本面試問題和答案