次を使用して、bashスクリプトからpythonスクリプトを実行できることを知っています。
python python_script.py
しかし、bashスクリプトからpythonスクリプトに変数/引数を渡したい場合はどうでしょう。どうやってやるの?
基本的に、bashはファイル名を作成し、pythonがアップロードしますが、呼び出すときにbashからpythonにファイル名を送信する必要があります。
Bashスクリプトでpythonスクリプトを実行するには、ターミナル内で実行するのと同じコマンドを呼び出す必要があります。例えば
> python python_script.py var1 var2
python内でこれらの変数にアクセスするには、必要になります
import sys
print sys.argv[0] # prints python_script.py
print sys.argv[1] # prints var1
print sys.argv[2] # prints var2
つかいます
python python_script.py filename
Pythonスクリプト内
import sys
print sys.argv[1]
埋め込みオプション:
pythonコードを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
環境変数を使用して、埋め込みpythonスクリプトにデータを渡します。
#!/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
メッセージウィンドウを表示する小さなpythonルーチンを呼び出すbashスクリプトがあります。 killallを使用してpythonスクリプトを停止する必要があるため、上記の方法は使用できません。killallpythonを実行すると、他のpythonを取り出すことができます。 _私が使用するプログラム
pythonprog.py "$argument"
&#&はbashスクリプトに直接制御を返すため、バックティックの外側に配置する必要があります。このメッセージのプレビューでは、何らかの理由でコマンドの両側に「 `」が表示されていません。
pythonスクリプトがpython pythonprog.pyではなく名前でcliから実行される限り、これはスクリプト内で機能します。複数の引数が必要な場合は、引用符内の各引数の間にスペースを入れてください。
スクリプトで使用:
echo $(python python_script.py arg1 arg2) > /dev/null
または
python python_script.py "string arg" > /dev/null
スクリプトは出力なしで実行されます。