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 hello로 확장 echo $(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

답변2

귀하의 질문은 혼란스럽게 표현되어 있지만 스크립트에 인수를 전달하여 별칭을 만들고 싶은 것 같습니다.

나는 이것이 당신이 원하는 것이라고 생각합니다.

alias runtest='python test.py'

달리 언급했듯이 쉘 함수는 별칭보다 선호되므로 덜 사소한 인수 처리가 가능합니다.

따라서 이 예에서는 다음과 같습니다.

function runtest() { python test.py "$1" ; }

관련 정보