![如何验证输入是否符合特定格式](https://linux22.com/image/7231/%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%E8%BE%93%E5%85%A5%E6%98%AF%E5%90%A6%E7%AC%A6%E5%90%88%E7%89%B9%E5%AE%9A%E6%A0%BC%E5%BC%8F.png)
我的 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.csv
shell 脚本工作正常,一旦我们输入远程服务器中存在的 ID,它就会复制文件。但是我有一些问题,如下所列:
id
no 应该由 6 个字符组成(例如M000001
)。- 当我输入正确的 ID 时,脚本正在复制文件。但是,当我输入错误的 ID 时,例如。
M000050
它不存在于远程服务器中,那么它也显示文件已被复制。但我不知道它将文件复制到哪里。 - 如果远程机器上不存在该目录,则需要创建该目录
/final/
。输入的路径将出现在远程服务器中。
答案1
- ID 号应为 6 个字符(如 M000001)。
像这样的事情可能会这样做:
if [[ ${#input_variable} != "6" ]] then
echo "wrong length"
exit 1
fi
- 当我输入正确的 ID 时,脚本正在复制文件。但是,当我输入错误的 ID 时,例如。 M000050 不存在于远程服务器中,那么它也显示文件已被复制。但我不知道它将文件复制到哪里。
它将文件复制到“默认”ftp
目录,因为cd
失败,您停留在上一个目录中(您可以使用命令找到该目录的路径是什么pwd
)。
- 如果目录 /final/ 在远程计算机中不存在,我需要创建它。输入将出现在远程服务器中之前的路径。
mkdir /wpath/to/copy/files/$input_variable/inputs/final/
应该这样做