繁体   English   中英

当 json 值包含空格时,将 jq output 分配给 bash 数组

[英]Assigning jq output to bash array when json value contains spaces

当我这样做时:

arr=($(echo '{"crew":[{"name":"kirk"},{"name":"bones"},{"name":"mr spock"}]}' | jq -r '.crew[].name | @sh'))

我得到:

echo "${arr[2]}"
mr
echo "${arr[3]}"
spock

但是,当我这样做时:

arr=("kirk" "bones" "mr spock")

我明白了:

echo "${arr[2]}"
mr spock

为什么在第一个示例中,bash 在创建数组时忽略了每个 jq 值包含的引号?

当我这样做时:

arr=($(echo '{"crew":[{"name":"kirk"},{"name":"bones"},{"name":"mr spock"}]}' | jq -r '.crew[].name | @sh'))

我得到:

echo "${arr[2]}"
mr
echo "${arr[3]}"
spock

但是,当我这样做时:

arr=("kirk" "bones" "mr spock")

我明白了:

echo "${arr[2]}"
mr spock

为什么在第一个示例中,bash 在创建数组时忽略了每个 jq 值包含的引号?

当我这样做时:

arr=($(echo '{"crew":[{"name":"kirk"},{"name":"bones"},{"name":"mr spock"}]}' | jq -r '.crew[].name | @sh'))

我得到:

echo "${arr[2]}"
mr
echo "${arr[3]}"
spock

但是,当我这样做时:

arr=("kirk" "bones" "mr spock")

我明白了:

echo "${arr[2]}"
mr spock

为什么在第一个示例中,bash 在创建数组时忽略了每个 jq 值包含的引号?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM