다음 코드 줄이 포함된 스크립트가 있습니다.
currentTenantId="$(az account show --query tenantId | jq -r 2>/dev/null)"
이 줄은 다음과 같은 오류 메시지를 제공합니다.
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
나는 그것을 분해하고 이것을 시도했습니다 :
az account show --query tenantId #OK - no errors
az account show --query tenantId | jq -r 2>/dev/null #OK - no errors
"$(az account show --query tenantId | jq -r 2>/dev/null)" #NOT OK - same error as mentioned above
추가 정보: 이것을 실행하면(결과를 변수에 넣지 않음):
"$(az account show --query tenantId | jq -r 2>/dev/null)"
나는 얻다:
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
Command '' not found, but can be installed with:
sudo apt install libpam-mount
sudo apt install openssh-server
sudo apt install openvswitch-common
sudo apt install openvswitch-switch
sudo apt install php-common
sudo apt install bpfcc-tools
sudo apt install burp
sudo apt install cryptmount
sudo apt install dolphin-emu
sudo apt install mailutils-mh
sudo apt install mmh
sudo apt install nmh
이 스크립트는 다른 여러 클라이언트에 사용되며 다른 클라이언트에서도 작동합니다. 따라서 스크립트를 변경하고 싶지 않지만 다른 클라이언트에서 작동하므로 내 클라이언트에는 뭔가 빠진 것이 있어야 한다고 생각합니다. 이 문제를 해결하기 위해 어떤 방향으로든 안내해 줄 수 있는 사람이 있습니까?
우분투 18.04를 실행 중입니다.
내가 실행할 때 :
currentTenantId="$(az account show --query tenantId | jq -r)"
나는 얻다:
jq - commandline JSON processor [version 1.5-1-a5b5cbe]
Usage: jq [options] <jq filter> [file...]
jq is a tool for processing JSON inputs, applying the
given filter to its JSON text inputs and producing the
filter's results as JSON on standard output.
The simplest filter is ., which is the identity filter,
copying jq's input to its output unmodified (except for
formatting).
For more advanced filters see the jq(1) manpage ("man jq")
and/or https://stedolan.github.io/jq
Some of the options include:
-c compact instead of pretty-printed output;
-n use `null` as the single input value;
-e set the exit status code based on the output;
-s read (slurp) all inputs into an array; apply filter to it;
-r output raw strings, not JSON texts;
-R read raw strings, not JSON texts;
-C colorize JSON;
-M monochrome (don't colorize JSON);
-S sort keys of objects on output;
--tab use tabs for indentation;
--arg a v set variable $a to value <v>;
--argjson a v set variable $a to JSON value <v>;
--slurpfile a f set variable $a to an array of JSON texts read from <f>;
See the manpage for more options.
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
답변1
해결책: 명령 오류로 밝혀졌습니다. 다음과 같아야 합니다.
currentTenantId="$(az account show --query tenantId 2>/dev/null | jq -r .)"