Como verificar se a entrada está de acordo com determinado formato

1

Eu preciso de ajuda no meu script de shell. Abaixo está meu script de shell que transfere o arquivo de um servidor para outro.

#!/bin/bash
echo "Please enter id no : "
read input_variable
echo "You entered: $input_variable"
HOST=xxxx
USER=xx
PASSWORD=xxx
ftp -inv $HOST <<EOF
user $USER $PASSWORD
cd /wpath/to/copy/files/$input_variable/inputs/final/
mput x.csv
bye
EOF

O script de shell está funcionando bem e está copiando o arquivo X.csv assim que inserimos o id no que está presente no servidor remoto. No entanto, tenho alguns problemas listados abaixo:

  1. id no deve ser de 6 caracteres (como M000001 ).
  2. Quando eu digito o id correto, o script está copiando o arquivo.No entanto, quando eu digito o id errado, por exemplo. M000050 que não está presente no servidor remoto, então também está mostrando que o arquivo foi copiado. Mas não tenho ideia de onde está copiando o arquivo.
  3. Eu preciso criar o diretório /final/ se ele não sair na máquina remota. O caminho até as entradas estará presente no servidor remoto.
por chandra prakash 02.05.2016 / 11:34

1 resposta

3

  1. id no should be of 6 characters (like M000001).

Algo como isso pode fazer isso:

if [[ ${#input_variable} != "6" ]] then
   echo "wrong length"
   exit 1
fi
  1. When I enter the correct id, the script is copying the file. However when i enter wrong id eg. M000050 which is not present in remote server, then also it is showing the file is copied. But I don't have any idea where it is copying the file.

Copia o arquivo para o diretório "padrão" ftp , porque o cd falhou, você fica no diretório anterior (você pode descobrir qual é o caminho para esse diretório usando o comando pwd ).

  1. I need to create the directory /final/ if it doesn't exit in remote machine. the path till inputs will be present in remote server.
mkdir /wpath/to/copy/files/$input_variable/inputs/final/

deve fazer isso

    
por 02.05.2016 / 12:09