Para verificar se um script shell foi bem-sucedido em um atalho no Mac, capture seu status de saída imediatamente após a execução e retorne esse número como texto. No Atalhos, adicione a ação Executar Script Shell e, em seguida, use uma ação Se para ramificar com base no valor retornado: 0 significa sucesso pela convenção do shell; um valor diferente de zero indica um erro ou outro resultado malsucedido. Esse método torna o status explícito em vez de presumir que o atalho expõe uma variável de status separada.
Adicione uma ação de shell e capture o status
Abra o atalho no app Atalhos no seu Mac. Pesquise na biblioteca de ações por Executar Script Shell e adicione-a. A Apple descreve as ações de script shell como parte do ecossistema do Atalhos do Mac, embora o Manual do Usuário do Atalhos não documente todas as configurações ou detalhes de versão para essa ação. Se ela não estiver presente na sua biblioteca de ações, não a substitua pela ação de nome semelhante do Automator presumindo que ela se comporte de forma idêntica; verifique as ações disponíveis no seu Mac. Visão geral do Atalhos da Apple
No campo de script, coloque o comando do script em uma linha e, logo na linha seguinte, capture $?. Por exemplo, se o script for executável e estiver localizado no caminho ilustrativo mostrado abaixo:
/Users/yourname/Scripts/refresh-files.sh >/dev/null
script_status=$?
printf '%s' "$script_status"
Substitua o caminho de exemplo pelo caminho real do seu script. O redirecionamento envia a saída padrão do script para /dev/null, fazendo com que a saída de texto da ação contenha apenas o número do status. Remova >/dev/null caso você também queira a saída do script, mas, nesse caso, o texto retornado poderá incluir tanto essa saída quanto o status. A saída de erros padrão (standard error) não é suprimida por esse redirecionamento.
$? armazena o status de saída do comando concluído mais recentemente. É por isso que a atribuição deve vir diretamente após a invocação do script: se outro comando for executado antes, $? descreverá esse outro comando. printf então emite o número salvo como texto, que o Atalhos pode usar como saída da ação. Guia de fluxo de trabalho com scripts shell no Mac da Apple
Ramifique com base no número retornado
Adicione uma ação Se após Executar Script Shell. Defina a entrada dela para a saída da ação de shell, escolha a condição de texto é e insira 0. Coloque as ações de sucesso sob Se e qualquer tratamento de falha sob Caso contrário. A ação Se do Atalhos no Mac direciona o conteúdo por um dos dois caminhos com base na condição que você configurar. Guia da Apple para ações Se no Atalhos no Mac
Trate o resultado como texto, pois a ação de shell o imprime. Uma execução bem-sucedida deve retornar 0; um resultado diferente de zero deve seguir para a outra ramificação. Você pode colocar uma ação Mostrar Alerta na ramificação de falha e incluir o valor do status em sua mensagem, ou passar o valor para uma ação posterior para fins de registro (log). Scripts shell geralmente usam valores diferentes de zero para distinguir as causas de falha, portanto, preservar o número pode ajudar no diagnóstico.
Evite erros comuns ao verificar o status
Não coloque echo $? em uma ação posterior esperando que ele se refira ao processo de shell anterior. Cada ação de shell inicia sua própria execução de comando; $? tem significado apenas dentro da mesma execução do shell e imediatamente após o comando cujo status você deseja obter. Da mesma forma, imprimir um status antes da execução do script apenas imprimirá o resultado de qualquer coisa que tenha sido executada anteriormente.
Se o script executar vários comandos, seu status de saída final poderá depender de como o script foi escrito. Por exemplo, um comando posterior bem-sucedido pode mascarar uma falha anterior, a menos que o script propague ou trate essa falha deliberadamente. O atalho só pode ramificar com base no status que o script retornar no final. Revise o próprio tratamento de erros do script se o resultado não refletir a etapa de seu interesse.
Ao executar um atalho pelo Terminal
Se o seu objetivo for verificar se o atalho inteiro foi executado com sucesso a partir do Terminal, a Apple documenta um comando shortcuts separado: shortcuts run "Shortcut Name". Esse comando é finalizado com 0 quando a execução do atalho for bem-sucedida e com 1 em caso de erro. Este é o status da invocação do atalho, e não uma variável dedicada contendo o código de saída da ação de shell interna. Para usar o status do próprio script em uma ramificação do atalho, capture-o e imprima-o dentro da ação de shell conforme descrito acima. Guia de linha de comando para o Atalhos no Mac da Apple
O padrão prático é simples: execute o script, salve $? imediatamente, imprima esse valor salvo e compare o texto resultante com 0 em uma ação Se. Isso dá ao atalho do Mac um caminho claro de sucesso e um de falha, mantendo a decisão vinculada ao resultado real de saída do script.
Fontes
Get More Done With Shortcuts! — Apple
Use a shell script action in an Automator workflow on Mac — Suporte da Apple
Use If actions in Shortcuts on Mac — Suporte da Apple
Run shortcuts from the command line — Suporte da Apple