Variável de teste se sua string ou não

0

Estou escrevendo um script que terá alguns argumentos e, portanto, estou usando getopts mas eu quero resolver o problema com um argumento.

Eu uso um switch, por exemplo -d , e quero que o argumento para -d seja o caminho para um diretório, como ./work .

Eu quero testar a entrada do usuário para uma string ou caminho, não um número. Existe alguma solução para resolver este problema? Eu quero resolver isso com algo como:

If (test)
  then echo it is string
else 
  echo it is not string       
    
por xpukm 11.11.2013 / 23:45

1 resposta

1

Toda variável é uma string.

Se você quiser distinguir "é um número" de "não é um número", teste isso.

while getopts d: OPTLET; do
  case "$OPTLET" in
    d)
      case "$OPTARG" in
        *[!0-9]*) echo 1>&2 "Non-numeric argument to -d, stopping."; exit 2;;
        *) number_of_foo=$OPTARG;;
      esac;;
  esac
done

Não está claro, com sua pergunta, se isso é o que você realmente quer. Um número é uma string. 123 é um nome de arquivo válido. Portanto, se o argumento para -d for um nome de arquivo em potencial, não há validação a ser feita. Qualquer sequência de caracteres é um nome de arquivo potencialmente válido.

    
por 12.11.2013 / 01:21