#!/bin/sh
''''which python2 >/dev/null 2>&1 && exec python2 "$0" "[email protected]" # '''
''''which python >/dev/null 2>&1 && exec python "$0" "[email protected]" # '''
''''exec echo "Error: I can't find python anywhere" # '''
import sys
print sys.argv
Ini pertama kali dijalankan sebagai skrip shell. Anda dapat meletakkan hampir semua kode shell di antara ''''
dan # '''
. Kode tersebut akan dieksekusi oleh shell. Kemudian, ketika python berjalan pada file, python akan mengabaikan garis karena terlihat seperti string yang dikutip tiga kali lipat ke python.
Skrip shell menguji apakah biner ada di jalur dengan which python2 >/dev/null
dan kemudian jalankan jika demikian (dengan semua argumen di tempat yang tepat). Untuk informasi lebih lanjut tentang ini, lihat Mengapa cuplikan ini dengan shebang #!/bin/sh dan exec python di dalam 4 tanda kutip tunggal berfungsi?
Catatan:Baris dimulai dengan empat '
dan tidak boleh ada spasi di antara '
keempat dan awal dari perintah shell (which
...)
Sesuatu seperti ini:
#!/usr/bin/env python
import sys
import os
if sys.version_info >= (3, 0):
os.execvp("python2.7", ["python2.7", __file__])
os.execvp("python2.6", ["python2.6", __file__])
os.execvp("python2", ["python2", __file__])
print ("No sutable version of Python found")
exit(2)
Perbarui Di bawah ini adalah versi yang lebih kuat dari yang sama.
#!/bin/bash
ok=bad
for pyth in python python2.7 python2.6 python2; do
pypath=$(type -P $pyth)
if [[ -x $pypath ]] ; then
ok=$(
$pyth <<@@
import sys
if sys.version_info < (3, 0):
print ("ok")
else:
print("bad")
@@
)
if [[ $ok == ok ]] ; then
break
fi
fi
done
if [[ $ok != ok ]]; then
echo "Could not find suitable python version"
exit 2
fi
$pyth <<@@
<<< your python script goes here >>>
@@