Saya tahu bahwa saya dapat menjalankan skrip python dari skrip bash saya menggunakan yang berikut ini:
python python_script.py
Tetapi bagaimana jika saya ingin meneruskan variabel / argumen ke skrip python saya dari skrip bash saya. Bagaimana saya bisa melakukan itu?
Pada dasarnya bash akan membuat nama file dan kemudian python akan mengunggahnya, tetapi saya perlu mengirim nama file dari bash ke python ketika saya memanggilnya.
python python_script.py
di shell default Anda di Debian, Anda sudah menggunakan bash ... jadi lakukan saja di skrip bash Anda:python python_script.py arg1 arg2 ...
Jawaban:
Untuk menjalankan skrip python dalam skrip bash Anda perlu memanggil perintah yang sama dengan yang Anda lakukan di dalam terminal. Contohnya
> python python_script.py var1 var2
Untuk mengakses variabel ini di dalam python, Anda perlu
import sys print sys.argv[0] # prints python_script.py print sys.argv[1] # prints var1 print sys.argv[2] # prints var2
sumber
Menggunakan
python python_script.py filename
dan dalam skrip Python Anda
import sys print sys.argv[1]
sumber
Selain itu
sys.argv
, lihat juga modul argparse , yang membantu menentukan opsi dan argumen untuk skrip.sumber
Opsi tersemat:
Bungkus kode python dalam fungsi bash.
#!/bin/bash function current_datetime { python - <<END import datetime print datetime.datetime.now() END } # Call it current_datetime # Call it and capture the output DT=$(current_datetime) echo Current date and time: $DT
Gunakan variabel lingkungan, untuk meneruskan data ke skrip python tertanam Anda.
#!/bin/bash function line { PYTHON_ARG="$1" python - <<END import os line_len = int(os.environ['PYTHON_ARG']) print '-' * line_len END } # Do it one way line 80 # Do it another way echo $(line 80)
http://bhfsteve.blogspot.se/2014/07/embedding-python-in-bash-scripts.html
sumber
gunakan dalam skrip:
echo $(python python_script.py arg1 arg2) > /dev/null
atau
python python_script.py "string arg" > /dev/null
Skrip akan dijalankan tanpa keluaran.
sumber
Saya memiliki skrip bash yang memanggil rutinitas python kecil untuk menampilkan jendela pesan. Karena saya perlu menggunakan killall untuk menghentikan skrip python, saya tidak dapat menggunakan metode di atas karena itu berarti menjalankan killall python yang dapat mengambil program python lain jadi saya gunakan
pythonprog.py "$argument"
& # Kontrol & mengembalikan langsung ke skrip bash jadi harus berada di luar backticks. Pratinjau pesan ini menunjukkannya tanpa "` "di kedua sisi perintah karena alasan tertentu.Selama skrip python akan dijalankan dari cli dengan nama daripada python pythonprog.py ini berfungsi di dalam skrip. Jika Anda membutuhkan lebih dari satu argumen, cukup gunakan spasi di antara setiap argumen di dalam tanda kutip.
sumber
dan lihat modul getopt . Ini bekerja cukup baik untuk saya!
sumber