Simplemente estoy intentando obtener un script bash
para devolver el contenido de un archivo de texto.
#!/bin/bash
cat $1
el problema es... cuando la ruta a un archivo no se envía a este script bash... ¿cómo se cerrará solo?
porque a través de la línea de comando normal... si no hay una ruta de archivo enviada al comando cat... no cuelga.
casi como si estuviera esperando algo...
Respuesta1
#!/bin/bash
if [[ "$#" -ne 1 ]]; then
echo "Usage: $0 [INPUT FILE]" 1>&2
exit 1
fi
cat "$1"
Respuesta2
Tu comando también tiene otro problema, ¿qué pasa si el nombre del archivo tiene espacios?
#!/bin/bash
cat "$1"
Cita siempre a menos que tengas una razón de peso para no hacerlo. Y cat ""
no se cuelga. En su lugar, produciría un mensaje de error como "No existe tal archivo o directorio".
Respuesta3
cat
se ignorará STDIN
si le proporciona un nombre de archivo. Conectarse STDIN
a /dev/null
sería una solución válida en este contexto.
$ cat test.sh
#!/bin/bash
cat $1 < /dev/null
$ ./test.sh test.sh
#!/bin/bash
cat $1 < /dev/null
$ ./test.sh
$
La desventaja de este enfoque es que volverá 0
si no se proporciona ningún nombre de archivo. No hay forma de evitar eso. Si no se abre el archivo especificado, se producirá un error.
Respuesta4
Para mostrar el contenido del archivo solo si el archivo existe:
#!/bin/bash
[ -f "$1" ] && cat "$1"
Este script asume que el primer argumento es el archivo que deseacat