Python을 사용하여 여러 줄 명령 실행

Python을 사용하여 여러 줄 명령 실행

Python에는 Python 명령문을 프로그램에 인수로 전달할 수 있는 옵션이 있습니다.

사용 예는 다음과 같습니다.

$ python -c "print(\"I'm running Python.\")"
I'm running Python.

Python 매뉴얼 페이지에서 우리는 다음을 읽었습니다.

전화했을 때-씨실행하는 명령
       명령으로 제공되는 Python 문입니다. 여기의 명령에는 여러 개가 포함될 수 있습니다
       여러 문은 개행으로 구분됩니다.

여러 줄을 전달하려고 시도했지만 실패했습니다.

$ python -c "print(0)\nprint(1)"
  File "<string>", line 1
    print(0)\nprint(1)
                     ^
SyntaxError: unexpected character after line continuation character

나는 또한 성공하지 못한 채 이 문서를 시도했습니다. 이 작업을 어떻게 수행합니까?

답변1

이에 의존하는 대신 쉘에서 지원하는 here-doc를 사용하십시오 python. 이렇게 하면 스크립트에서처럼 자유롭게 여러 수준의 따옴표 및 유형 코드 중첩이 필요합니다.

-실행 후는 python실행할 명령이 여기 문서에서 제공하는 표준 입력에서 나온다는 것을 의미합니다. 대부분의 유틸리티는 이를 구현합니다. 즉, -명령 뒤에 오는 내용은 구문 분석이 필요한 표준 입력에서 입력이 나온다는 의미입니다.

python - <<'EOF'
print("I'm running Python.")
print("Are you now?")
EOF

\n또한 쉘은 또는 와 같은 명령을 사용하지 않으면 이스케이프된 리터럴을 인식하지 못합니다. 문자열은 실행 파일로 전달되기 전에 기본 셸에서 처리됩니다. 리터럴에 사용할 수 있는 특별한 처리가 없기 때문에 쉘은 리터럴을 여러 줄로 확장하지 않습니다.printfecho -e".."\n

-c사용할 때 Enter터미널의 키를 누르고 다음 명령 세트를 계속 입력하여 암시적으로 줄바꿈을 생성 해야 합니다.

python -c "print(0)
> print(1)"

이를 계속 사용 python -c하고 수행하는 또 다른 방법은 문자열을 정의하여 에서 수행하는 것입니다 "..". bash/에서 수행하는 한 가지 방법은 다음을 zsh사용하는 것입니다.ANSI-C 인용문그리고 할

python -c $'print(0)\nprint(1)'

즉, 쉘은 실행 파일에 전달하기 전에 및 기타 이스케이프 시퀀스를 확장합니다 $'..'. \n이제 python통역사는 전달된 두 개의 개별 라인을 볼 수 있습니다.

잘 작성된 크로스 사이트 속임수도 있습니다.StackOverflow - 하나의 명령줄에서 여러 줄의 명령문을 실행하시겠습니까?이것을 설명하십시오.

관련 정보