😄

`curl (python) | python`で引数を渡したい

2022/01/18に公開

分かりにくいのでコードで説明

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でできる方法を探していたのですが、このアプローチは沼に突入しそうなので早々に諦めました。

やりたいことは

  1. curlで実行ファイルを取得する(python)
  2. pythonに引数を渡す

の2つなので、これを解決できる方法が欲しかったんですよね。
curlで実行するのではなく、「Githubに最新版を置いて必要な時に取り出して実行させたい」というのが目的なので、テンポラリファイルを作る事に運用面での問題はありません。

この方法で、元々作っていたshellファイルをpythonで作り直す、という恐ろしい手戻り工数の発生を阻止したのでした。

反省

日本語を扱う可能性がある場合は、最初からshellファイルで作らないようにしよう。

GitHubで編集を提案

Discussion