cbgprog
(usa Ubuntu)
Enviado em 29/11/2017 - 13:38h
Olá!
Tem alguns detalhes para analisar:
A instrução test ou [ ] (são a mesma coisa) usa o operador -eq para testar igualdade em comparações numéricas e o operador = para testar igualdades em strings. E strings devem ficar entre aspas.
Portanto devemos usar $# -eq 1 pois o numero de argumentos na linha de comando é um valor numérico. Já para o caso do help devemos usar $2 = "help" entre aspas, pois help é uma string de caracteres.
Lembrando que seu script assume que o usuário sempre vai digitar pelo menos dois parâmetros na linha de comando. Caso o usuário digite menos (um ou nenhum) vai dar o erro:
linha 3: [: =: esperado operador unário
Ficou assim:
#!/bin/bash
if [ $2 = "help" ] || [ $# -eq 1 ] && [ $2 = "help" ] ; then
echo -e "$0 'Arquivo' 'Tipo'"
echo -e "\nTipos { gcc, latex }"
fi
Uma boa fonte que pode ser útil é o Canivete Suíço do Shell do grande Aurelio Marinho Jargas que você pode acessar neste endereço:
http://aurelio.net/shell/canivete/ , o capitulo 7 tem a tabela da opções do comando [