Use um subshell que saia com o valor especificado.
Isso gerará 5
:
a=5; ( exit $a ) && echo foo; echo $?
Isso produzirá foo
e 0
(note que este zero é definido por echo
sucessor, não pelo exit
no subshell):
a=0; ( exit $a ) && echo foo; echo $?
Na sua forma abreviada (sem definir visivelmente a
ou investigar $?
explicitamente):
( exit $a ) && echo foo
Minha resposta é aquela que vem de apenas responder à pergunta e resolvê-la como um teste curioso, "como podemos definir $?
(usando notação útil)". Eu não faço nenhuma tentativa de procurar qualquer significado ou função mais profunda ou mesmo contexto neste caso (porque o non foi dado). Eu também não julgo a validade, eficiência ou usabilidade da solução. Às vezes, em minhas respostas, digo coisas como "... mas não faça isso, porque ...", seguido de "em vez disso, faça isso ...". Neste caso, escolho interpretar a questão simplesmente como um teste curioso.
Mais informações foram adicionadas à pergunta.
Minha abordagem da bifurcação de um subshell é que scripts como o GNUconfigure
fazem isso o tempo todo , e que não é terrivelmente lento, a menos que seja feito de uma forma muito apertada (longa duração) loop.
Eu não posso falar muito sobre o uso disso em / com o GNU parallel
, já que não sou usuário frequente desse software.