如何验证输入是否符合特定格式

如何验证输入是否符合特定格式

我的 shell 脚本需要帮助。下面是我的 shell 脚本,它将文件从一台服务器传输到另一台服务器。

#!/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

X.csvshell 脚本工作正常,一旦我们输入远程服务器中存在的 ID,它就会复制文件。但是我有一些问题,如下所列:

  1. idno 应该由 6 个字符组成(例如M000001)。
  2. 当我输入正确的 ID 时,脚本正在复制文件。但是,当我输入错误的 ID 时,例如。M000050它不存在于远程服务器中,那么它也显示文件已被复制。但我不知道它将文件复制到哪里。
  3. 如果远程机器上不存在该目录,则需要创建该目录/final/。输入的路径将出现在远程服务器中。

答案1

  1. ID 号应为 6 个字符(如 M000001)。

像这样的事情可能会这样做:

if [[ ${#input_variable} != "6" ]] then
   echo "wrong length"
   exit 1
fi
  1. 当我输入正确的 ID 时,脚本正在复制文件。但是,当我输入错误的 ID 时,例如。 M000050 不存在于远程服务器中,那么它也显示文件已被复制。但我不知道它将文件复制到哪里。

它将文件复制到“默认”ftp目录,因为cd失败,您停留在上一个目录中(您可以使用命令找到该目录的路径是什么pwd)。

  1. 如果目录 /final/ 在远程计算机中不存在,我需要创建它。输入将出现在远程服务器中之前的路径。
mkdir /wpath/to/copy/files/$input_variable/inputs/final/

应该这样做

相关内容