저는 현재 프로세스에서 여러 셸 명령을 실행해야 하는 centos 7 가상 머신에서 Python 스크립트를 작성 중입니다. 해당 작업을 수행하는 라이브러리를 찾았지만 그 중 하나에서 오류가 발생했습니다. 이 명령은 텍스트 파일에서 받았기 때문에 실제로 그 명령이 무엇을 하는지는 모릅니다. 나는 단순한 것을 이해하지만 이것은 내 수준을 벗어납니다. 오류가 발생하는 줄이 2줄뿐이므로 스크립트 자체의 문제가 아니라 사용 방법에 문제가 있다는 것을 알고 있습니다. ./linkerd
예링커의이진 파일이고 linkerd_images.txt에는 이미지 목록이 있습니다.
./linkerd install --ha --ignore-cluster | grep image: | grep linkerd | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt
./linkerd viz install --ha --skip-checks | grep images: | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt
나는 그들이 링커드의 바이너리를 사용하기 때문에 응용 프로그램에 고유할 수 있다는 것을 알고 있습니다. 그렇다면 해당 저장소에서 문서를 찾을 수 없기 때문에 문서를 어디서 찾을 수 있는지 알아내야 합니다(그래서 제가 처음에 여기에 왔습니다).
편집: 이것은 스크립트에서 발생하는 오류입니다.
UnicodeDecodeError: 'utf-8' codec: can't decode byte 0xe2 in position 49: Invalid continuation byte
터미널에서 첫 번째 명령만 실행하면 다음과 같은 결과가 나타납니다.
sed: -e expression #1, char 1: unknown command: '[Question Mark Symbol]'
나는 실제로 내 Python 코드에서 직접적인 답변을 기대하지 않기 때문에 오류 자체에 대해 너무 걱정하지 않습니다. 나는 명령 자체가 모든 멋진 캐릭터에 대해 무엇을 하는지 이해하고 싶습니다.
파이썬 코드를 추가하라는 요청을 받았습니다. 나는 asyncio
사용했다실행 기능대부분의 쉘 명령을 실행하십시오. 따라서 Python 코드 자체는 간단합니다.
asyncio.run(run(
"""./linkerd install --ha --ignore-cluster | grep image: | grep linkerd | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt"""))
또한 linkerd 바이너리를 확인했는데 json 파일처럼 보입니다.
답변1
이것이 내가 찾은 답이다
문제는 캐럿이 아니라 아포스트로피입니다. 나에게 주문한 사람이 프랑스어 키보드로 쳤어요. 업무용 컴퓨터에 있어서 다른 화면을 보다가 여기에 입력해서 별 생각 없이 정확한 아포스트로피로 다시 입력했습니다. 이제 sed 오류와 그 의미를 살펴보니 훨씬 더 의미가 있습니다. sed -e expression #1
는 다음의 첫 번째 단어입니다 -e
(이 경우 's/^
). '
Char #1은 내가 미리 알았더라면 처음에 봤을 곳입니다.