argumento da linha de comandos com mensagem de uso

1

Estou tendo muitos problemas ao usar um argumento de linha de comando em um arquivo de script para verificar se um arquivo está sendo inserido na linha de comando. Então basicamente eu tenho um arquivo de script chamado ./file e um logfile chamado log. Eu tenho uma instrução if then else para executar uma verificação para ver se o arquivo correto foi inserido e, se não, o programa sai com um erro de eco. Se o nome do arquivo correto for digitado, ele continuará executando o script. Eu ou recebo um diretório de erro ou arquivo não existe ou meu erro de eco não importa o que eu faço. Alguém pode por favor apontar o que estou fazendo errado? Obrigado por qualquer ajuda fornecida. Eu estou usando massa. é isso que eu tenho

  if ["./file log"]
      then
            echo ""
  else
            echo "error"
            exit 0
  fi
    
por jake 15.11.2015 / 05:23

2 respostas

1

Você não precisa (auto-) referenciar o próprio script. Você sabe que deve existir. Você só precisa ver se o arquivo log existe. Portanto, use o -f test ("FILE existe e é um arquivo regular"). Veja man test para mais informações ( test é essencialmente equivalente a [...] ).

if [ -f "log" ]
  then
    echo ""
  else
    echo "error"
    exit 0
fi

Se o arquivo log for fornecido pelo argumento ao chamar o script (por exemplo, $ ./file log ), você poderá consultar o primeiro argumento com $1 . Portanto,

if [ -f "$1" ]
    
por 15.11.2015 / 05:30
1

Você deve querer isso também. $ 0 é o nome do script e $ # o número de argumentos. Notas adicionais, por padrão, um script retorna 0 em sucesso e < > 0 no erro

#!/bin/bash 
    display_usage() { 
        echo "This script must be run with ...." 
        echo -e "\nUsage:\n$0 [arguments] \n" 
    } 

if [ $# -eq 0 ]; then
    display_usage
    exit 1
fi
.... script ....
exit 0
    
por 15.11.2015 / 10:12

Tags