Ejecutar script Bash: desde abrir la carpeta hasta el código de salida
03
Ejecutar un script
Ejecutar un script Bash con argumentos en WSL o por SSH
Un script Bash puede iniciarse de tres formas: `bash script.sh arg1 arg2`, `./script.sh` tras aplicar `chmod +x` (lo cual funciona gracias a la línea shebang), o mediante la función interna `exec`, que reemplaza el shell y nunca devuelve el control. La primera forma es la más sencilla para empezar, porque no requiere cambiar permisos. Shell ejecuta el comando en el entorno que elegiste, ya sea WSL en tu PC o un sistema Linux que poseas al que accedes por SSH, y la tarjeta en el chat muestra la salida real y el código de salida. Tú decides los argumentos, así que puedes probar el caso normal y el caso de fallo en una sola conversación. Es común preguntar qué forma elegir: usa `bash script.sh` mientras pruebas, porque funciona incluso cuando el archivo no tiene permiso de ejecución, y cambia a `./script.sh` una vez que el script está finalizado y comienza con la línea shebang. Cualquiera que sea la forma que uses, el estado de salida es el mismo número, de 0 a 255, y 0 siempre significa que el script terminó correctamente.
01
Abrir la carpeta
Elige la carpeta que contiene tu script como carpeta de trabajo; las herramientas de archivo como `read_file` y `grep` funcionan dentro de ella. Las herramientas de archivo operan dentro de esa carpeta, mientras que Shell, web y SSH no están limitadas a ella.
02
Elegir un modo de aprobación
Usa Ask first para ver cada cambio como una diferencia, o Plan only para leer un plan primero. Auto-run actúa de inmediato. Ask first solo hace una pausa antes de las acciones que modifican algo.
03
Pedir una ejecución
Describe la ejecución en palabras sencillas, por ejemplo: ejecuta el script con el argumento test. Nombra WSL o tu servidor si tienes ambos. Nombra el script y sus argumentos exactamente.
04
Leer el resultado
Abre la tarjeta para ver la salida y el código de salida real, luego acepta o rechaza cualquier edición. Un número distinto de cero es información. Ejecútalo de nuevo después de cada edición aceptada. Compáralo con el resultado que esperabas.
Un script de ejemplo pequeño
Pageferry · Ejecutar el ejemplo● Ask first
Ejecuta greet.sh con el argumento test, luego sin ningún argumento.
Shellbash greet.sh testexit 0
Shellbash greet.shexit 2
read_filegreet.shread
grepUsage1 match
esperando tu aprobación antes del siguiente pasoRechazarAceptar
greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
echo "Usage: $0 NAME [COUNT]" >&2
exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
echo "Hello, $name ($i)"
done
exit 0
greet.sh termina con una línea de uso y código de salida 2 cuando falta el nombre, toma un contador opcional con un valor predeterminado de 1, y solo imprime saludos en un bucle. Léelo una vez antes de ejecutarlo: no hay sudo, no hay descarga y nada que mueva o elimine un archivo, así que es inofensivo probarlo en cualquier máquina que poseas. Línea por línea: la shebang nombra el intérprete, `set -eu` detiene el script ante errores y variables sin definir, la prueba de `$#` cuenta los argumentos, y el bucle `for` solo hace eco.
Ejecutar un script en cuatro pasos sencillos
Crear el archivo del script
Comienza con una carpeta de trabajo vacía. Pide al agente que escriba el ejemplo anterior, y `write_file` crea `greet.sh` en esa carpeta. Abre la tarjeta y lee el archivo línea por línea: la primera línea es la shebang que nombra al intérprete, `set -eu` detiene el script ante errores y variables sin definir, y la comprobación de `$#` protege el resto de la falta de un nombre. Bajo Ask first, el nuevo archivo espera tu aprobación antes de escribirse. Nada se ha ejecutado todavía. La rama de uso de este script elige 2 para un uso incorrecto, que es una convención común. Acepta el archivo solo cuando entiendas cada línea, y si no lo haces, pide al agente que lo explique. Una edición rechazada deja la carpeta sin cambios.
Ejecutarlo y leer el código de salida
Las personas que buscan “bash execute script” generalmente quieren una línea: `bash greet.sh test`. Pide al agente que lo ejecute, y Shell inicia el comando en el entorno de tu chat, como WSL, y envía de vuelta la salida real y el código de salida real. Expande la tarjeta para ver la salida completa. Luego pide la misma ejecución sin el argumento, y deberías ver la línea de uso y el código de salida 2. El código de salida para aplicaciones de línea de comandos es un número de 0 a 255 que el llamador lee, y 0 significa éxito. El código de salida 127 significa que no se encontró un comando y 126 significa que no se puede ejecutar un archivo, así que estos dos números apuntan a un error tipográfico, un programa faltante o un permiso de ejecución faltante.
Leer los argumentos dentro del script
`read_file` muestra el script y `grep` encuentra dónde se usan `$1` y `$2`, así que puedes verificar que cada argumento tenga un valor predeterminado o un mensaje de error. Así es como se analizan los argumentos opcionales: el script buclea con `getopts`, y con solo uno o dos valores los `plain $1` y `${2:-1}` son suficientes. Los alias con argumentos no se comportan como funciones, porque un alias solo reemplaza la palabra escrita con texto, así que usa una función cuando los valores deben ir en el medio. Pide al agente que cambie una cosa, por ejemplo el valor predeterminado del contador, y lee la diferencia que muestra `edit_file`. Luego ejecuta el script de nuevo y compara el nuevo código de salida con el anterior. Plan only puede listar los parámetros que entiende el script sin ejecutar nada.
Ejecutar el mismo script en un servidor que poseas
Los mismos pasos funcionan cuando el entorno de trabajo es un sistema Linux que poseas, al que accedes por SSH. Las herramientas de archivo siguen funcionando en la carpeta de trabajo del chat, mientras que los comandos de Shell se ejecutan en el entorno que elegiste, así que verifica a qué se refiere una tarjeta. La función interna `exec`, que la gente busca como “bash exec script”, reemplaza el shell con otro comando y nunca devuelve el control, así que nada después de él se ejecuta y el código de salida es el del nuevo comando. Guarda una copia antes de que un script mueva o elimine archivos, ejecútalo con `echo` primero como una ejecución en seco, y usa solo máquinas a las que tengas permiso para administrar. Lee la tarjeta final antes de cerrar el chat. Cuando transfieres todos los valores a otro comando, escribe "$@" entre comillas dobles para que cada valor mantenga su forma.