Para comprobar si un script de shell se ejecutó correctamente en un atajo de Mac, captura su estado de salida inmediatamente después de que se ejecute y devuelve ese número como texto. En Atajos, añade la acción Ejecutar script de shell y, a continuación, utiliza una acción Si para bifurcar según el valor devuelto: 0 significa éxito según la convención de shell; un valor distinto de cero indica un error u otro resultado fallido. Este método hace que el estado sea explícito en lugar de asumir que el atajo expone una variable de estado independiente.

Añadir una acción de shell y capturar el estado

Abre el atajo en la app Atajos de tu Mac. Busca en la biblioteca de acciones Ejecutar script de shell y añádela. Apple describe las acciones de script de shell como parte del ecosistema de Atajos de Mac, aunque la Guía del usuario de Atajos no documenta cada ajuste o detalle de versión para esta acción. Si no aparece en tu biblioteca de acciones, no la sustituyas por la acción de nombre similar de Automator asumiendo que se comporta de forma idéntica; comprueba las acciones disponibles en tu Mac. Información general sobre Atajos de Apple

En el campo del script, coloca el comando del script en una línea y, a continuación, captura $? en la línea inmediatamente posterior. Por ejemplo, si el script es ejecutable y se encuentra en la ruta ilustrativa mostrada a continuación:

/Users/yourname/Scripts/refresh-files.sh >/dev/null
script_status=$?
printf '%s' "$script_status"

Sustituye la ruta de ejemplo por la ruta real a tu script. La redirección envía la salida estándar del script a /dev/null, por lo que la salida de texto de la acción contendrá únicamente el número de estado. Elimina >/dev/null si también deseas la salida del script, pero ten en cuenta que el texto devuelto podría incluir tanto esa salida como el estado. El error estándar no se suprime con esta redirección.

$? almacena el estado de salida del comando completado más recientemente. Por este motivo, la asignación debe ir directamente después de la invocación del script: si se ejecuta otro comando antes, $? describirá ese comando en su lugar. Luego, printf emite el número guardado como texto, que Atajos puede utilizar como salida de la acción. Guía de flujos de trabajo de scripts de shell para Mac de Apple

Bifurcar según el número devuelto

Añade una acción Si después de Ejecutar script de shell. Establece su entrada en la salida de la acción de shell, elige la condición de texto es e introduce 0. Coloca las acciones en caso de éxito bajo Si y cualquier gestión de fallos bajo Si no. La acción Si de Atajos de Mac dirige el contenido por una de las dos rutas en función de la condición configurada. Guía de Apple sobre acciones Si en Atajos en el Mac

Trata el resultado como texto, ya que la acción de shell lo imprime como tal. Una ejecución correcta debería devolver 0; un resultado distinto de cero debería tomar la otra rama. Puedes colocar una acción Mostrar aviso en la rama de error e incluir el valor de estado en su mensaje, o pasar el valor a una acción posterior para su registro. Los scripts de shell suelen utilizar diferentes valores distintos de cero para distinguir los motivos del fallo, por lo que conservar el número puede ayudar con el diagnóstico.

Evitar errores comunes al comprobar el estado

No coloques echo $? en una acción posterior esperando que haga referencia al proceso de shell anterior. Cada acción de shell inicia su propia ejecución de comandos; $? tiene significado dentro de la misma ejecución de shell e inmediatamente después del comando cuyo estado deseas obtener. Del mismo modo, imprimir un estado antes de que se ejecute el script solo imprimirá el resultado de lo que se haya ejecutado previamente.

Si el script ejecuta varios comandos, su estado de salida final puede depender de cómo esté escrito. Por ejemplo, un comando exitoso posterior puede enmascarar un fallo previo a menos que el script propague o gestione deliberadamente ese fallo. El atajo solo puede bifurcarse en función del estado que el script devuelva en última instancia. Revisa el control de errores propio del script si el resultado no refleja el paso que te interesa.

Cuando ejecutas un atajo desde Terminal

Si tu objetivo es comprobar si todo el atajo se ejecutó correctamente desde Terminal, Apple documenta un comando shortcuts independiente: shortcuts run "Shortcut Name". Ese comando sale con 0 cuando la ejecución del atajo se realiza con éxito y con 1 en caso de error. Este es el estado de la invocación del atajo, no una variable dedicada que contenga el código de salida de la acción interna de shell. Para utilizar el estado del propio script en una bifurcación del atajo, captúralo e imprímelo dentro de la acción de shell como se describió anteriormente. Guía de línea de comandos para Atajos en el Mac de Apple

El patrón práctico es sencillo: ejecuta el script, guarda $? inmediatamente, imprime ese valor guardado y compara el texto resultante con 0 en una acción Si. Esto proporciona al atajo de Mac una ruta clara de éxito y una ruta de fallo, manteniendo la decisión vinculada al resultado de salida real del script.

Fuentes