Pythonスクリプトにstdinを渡す方法

Pythonスクリプトにstdinを渡す方法

シェルコマンドのエイリアスを使用して、シェルコマンドの入力をPythonスクリプトに渡したいと思います。

test.py:

import sys
print(sys.argv)

ニックネーム

alias foo='echo $(python test.py $1)'

$ python cd_alias_test.py helloすべての引数が印刷されるので、この['test.py', 'hello'] エイリアスは同じことをしたいと思います。ただし、標準出力は

['test.py'] hello

これは、入力文字列がスクリプトの引数ではなく標準入力に渡されることを意味します。

希望の効果をどのように取得できますか?

ベストアンサー1

alias test='echo $(python test.py $1)'

$1エイリアスとして定義されていません。エイリアスはシェル機能ではありません;彼らは単なるテキスト置換なので、あなたのものはに拡張され、拡張さtest helloecho $(python test.py ) helloますecho ['test.py'] hello

シェル機能が必要な場合は、作成してください! (そして関数やエイリアスを呼び出さないでくださいtest。名前はすでにシェルで論理評価のために予約されています。)

function foo() { echo $(python test.py $1) }
foo hello

test.pyしかし、人々は不思議です。単に実行可能ファイル(たとえばchmod 755 test.py)を作成し、#!/usr/bin/env python3その中に最初の行を含めるとしたらどうでしょうか?それから直接実行してください。

./test.py hello darkness my old friend

おすすめ記事