현재 스크립트의 결과를 여기에서 선택한 배열의 마지막 결과만 얻을 수 있는 다른 명령으로 파이프하는 방법을 찾으려고 합니다.
jq -r --arg name "$1" '.packageAliases | to_entries[] | select(.key | startswith($name))' sfdx-project.json
파일 은 스크립트가 새 패키지 버전 번호와 ID를 추가하는 sfdx-project.json
중첩된 JSON이 있는 json 파일입니다 .packageAliases
{
"data" : "that",
"is" : "not",
"really" : "necessary",
"packageAliases" : {
"package" : "0H0fffff",
"[email protected]" : "04t0xxxxxx"
}
}
아이디어는 특정 패키지 이름에 대한 모든 패키지 별칭을 선택하고 사용해야 할 마지막 별칭을 그대로 두는 것입니다.
select
내가 얻은 결과를 파이프로 연결하려고 하면 last
다음 오류가 발생합니다.
Cannot index object with number
select() 명령이 배열을 반환한다고 생각했지만(중간 결과를 에코할 때도 이 배열을 얻습니다)
last() 명령을 다른 곳에 넣으면 배열에 몇 개의 null 값만 남게 되지만 실제로 필요한 단일 값은 여전히 얻지 못합니다.
배열에서 마지막 항목을 가져오려면 명령을 어떻게 변경해야 합니까 select()
?
답변1
jq -r --arg name "$1" 'last(.packageAliases | to_entries[] | select(.key | startswith($name)))
전체 명령을 last()로 래핑하면 전체 파이프라인 체인의 결과가 되기 때문에 트릭이 수행됩니다.