Estou simplesmente tentando fazer com que um script bash
retorne o conteúdo de um arquivo de texto.
#!/bin/bash
cat $1
o problema é .. quando o caminho para um arquivo não é alimentado para este script bash ... como ele se fechará.
porque via linha de comando normal... se não houver nenhum caminho de arquivo sendo alimentado para o comando cat... ele não desliga.
quase como se estivesse esperando por alguma coisa.
Responder1
#!/bin/bash
if [[ "$#" -ne 1 ]]; then
echo "Usage: $0 [INPUT FILE]" 1>&2
exit 1
fi
cat "$1"
Responder2
Seu comando também tem outro problema, e se o nome do arquivo tiver espaços?
#!/bin/bash
cat "$1"
Sempre cite, a menos que você tenha um motivo convincente para não fazê-lo. E cat ""
não trava. Em vez disso, produziria uma mensagem de erro como "Esse arquivo ou diretório não existe".
Responder3
cat
irá ignorar STDIN
se você fornecer um nome de arquivo. Conectar STDIN
-se /dev/null
seria uma solução válida neste contexto.
$ cat test.sh
#!/bin/bash
cat $1 < /dev/null
$ ./test.sh test.sh
#!/bin/bash
cat $1 < /dev/null
$ ./test.sh
$
A desvantagem desta abordagem é que ela retornará 0
se nenhum nome de arquivo for fornecido. Não há como evitar isso. A falha ao abrir o arquivo especificado ainda retornará falha.
Responder4
Para exibir o conteúdo do arquivo somente se o arquivo existir:
#!/bin/bash
[ -f "$1" ] && cat "$1"
Este script assume que o primeiro argumento é o arquivo que você desejacat