Seu segundo comando funciona, o problema é que você está usando bash
ou qualquer shell que coloque todos os componentes de pipelines em um subshell. myresult2
está definido corretamente, mas a variável está imediatamente fora do escopo, a menos que você permaneça no mesmo subshell, como aqui:
curl -L 'https://archive.org/wayback/available?url=stackoverflow.com' \
2>/dev/null | {
myresult2=$(jq '.archived_snapshots.closest.url'); echo "$myresult2" ; }
Se você executar este comando em ksh
, a atribuição da variável será feita no shell mais alto, portanto, funcionará como esperado.
Como alternativa, você pode definir a opção lastpipe para obter o comportamento ksh
em bash
:
shopt -s lastpipe
Se você quiser que isso funcione em uma sessão interativa, desative também o controle de tarefas:
set +m