Bash에서 Python으로 텍스트 블록을 전달하는 방법

Bash에서 Python으로 텍스트 블록을 전달하는 방법

bash에 넣은 다음 Python으로 보내서 더 많이 사용할 수 있는 텍스트 조각이 있습니다.

그래서 내 명령 줄은 cat input_file | sh bash_file.sh

내 sh 파일은

#!/bin/sh
input_data=$(cat)
"$input_data" | python3 ./python_file.py

내 파이썬 파일은

contents = sys.stdin.read()
print(contents)

그러나 실제로 콘텐츠에는 아무것도 저장되지 않습니다. 쉘 스크립트 파일에 추가한 내용을 Python에서 어떻게 인쇄할 수 있나요?

답변1

$input_data기본적으로 정확하지만 표준 입력으로 인쇄하지 않습니다 . 대신 이라는 명령을 실행해 보십시오 $input_data.

printf다음과 같이 쉘 스크립트의 마지막 줄을 변경하여 변수의 내용을 인쇄하는 데 사용됩니다 .

printf "%s" "$input_data" | python3 ./python_file.py

답변2

쉘 스크립트의 표준 입력은 Python 스크립트의 표준 출력이 쉘 스크립트의 stdout에 전달되는 방식과 유사하게 스크립트의 python 명령에 전달됩니다. 따라서 변수를 사용할 필요가 없습니다. 이것으로 충분합니다.

#!/bin/sh
python python_file.py

cat file | sh script.sh당신은 그것을 당신 이나 더 나은 것으로 부를 수 있습니다

sh script.sh < file

cat - | python script.py가독성이 더 필요한 경우 stdin에 where를 사용하거나 -이 실행이 stdin을 기다린다는 주석을 추가할 수 있습니다.

관련 정보