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을 기다린다는 주석을 추가할 수 있습니다.