😄
`curl (python) | python`で引数を渡したい
分かりにくいのでコードで説明
shellでcurl -sf (.py) | python "コレを渡したい" "コレも渡したい"
を実行し、pythonに変数を渡したい。
# .py
import sys
args = sys.argv
print(args)
# ['.py', 'コレを渡したい', 'コレも渡したい']を表示させたい
解決策
# shellで実行
curl (.py) >.py
python (.py) "コレを渡したい" "コレも渡したい"
# 要らなければ捨てる
rm (.py)
経緯
curl -sf (.sh) | sh -s -- "コレを渡したい" "コレも渡したい"
で実行していたスクリプトがあったのですが、どうしてもshellでは実行できないことが起こってしまったので、別の言語(今回はpython)で作っていました。
元々shellで作っていたものを、必要な部分だけpythonに切り出しただけなのであまり頑張りたくなくて、curl -sf | python
でできる方法を探していたのですが、このアプローチは沼に突入しそうなので早々に諦めました。
やりたいことは
- curlで実行ファイルを取得する(python)
- pythonに引数を渡す
の2つなので、これを解決できる方法が欲しかったんですよね。
curlで実行するのではなく、「Githubに最新版を置いて必要な時に取り出して実行させたい」というのが目的なので、テンポラリファイルを作る事に運用面での問題はありません。
この方法で、元々作っていたshellファイルをpythonで作り直す、という恐ろしい手戻り工数の発生を阻止したのでした。
反省
日本語を扱う可能性がある場合は、最初からshellファイルで作らないようにしよう。
Discussion