cat
Bash 3.2에서 JSON이 포함된 구분된 문서를 출력하려고 할 때 이 동작 때문에 혼란스러워졌습니다.
입력하다:
$ cat <(cat <<EOF
> {"x":[{"a":1,"b":2}]}
> EOF)
산출:
{"x":["a":1]}
{"x":["b":2]}
어떻게 되어가나요?
답변1
이것은 단지 bash의 쉘 변수 확장입니다. 이 경우 중괄호 사이의 모든 항목이 반복되어 표현식으로 확장됩니다.
$ echo var{1,2,3,4}
var1 var2 var3 var4
$ echo var{1..10}
var1 var2 var3 var4 var5 var6 var7 var8 var9 var10
답변2
답변은 아니지만 형식화된 설명입니다.
$ cat <(cat <<EOF
> {"x":[{"a":1,"b":2}]}
> EOF)
bash: warning: here-document at line 15 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 15 delimited by end-of-file (wanted `EOF')
{"x":[{"a":1,"b":2}]}
새 줄에 오른쪽 대괄호를 넣으세요
$ cat <(cat <<EOF
> {"x":[{"a":1,"b":2}]}
> EOF
> )
{"x":[{"a":1,"b":2}]}
분명히 재현할 수 없습니다.
$ echo $BASH_VERSION
4.3.39(1)-release
답변3
Brace 확장에는 "braceexpand" 옵션이 적용됩니다. 예를 들어:
set +B
cat <(cat <<EOF
{"x":[{"a":1,"b":2}]}
EOF
)
단일 JSON 값을 생성합니다.