FTP 正在连接到服务器,但出现错误 -
Enter if the env is dev or test or prod:
test
Please enter the id no :
xxxxxxx
Connected to xxxx
220 (vsFTPd 2.2.2)
331 Please specify the password.
230 Login successful.
**?Invalid command
?Invalid command
?Invalid command
?Invalid command
?Invalid command**
200 PORT command successful. Consider using PASV.
下面是 shell 脚本 -
#!/bin/bash
echo "Enter if the env is dev or test or prod:"
while :
do
read -r INPUT_STRING
case $INPUT_STRING in
test | TEST)
echo "Please enter id no : "
read -r input_variable
if [[ ${#input_variable} -ne "7" ]]
then
echo "Please check id no given"
exit 1
fi
HOST=XXX
USER=XXX
PASSWORD=XX
ftp -inv $HOST <<- EOF
user $USER $PASSWORD
mypath='/test/$input_variable/destination/'
if ! cd "$mypath"
then
exit 1
fi
mput x.csv
EOF
exit 1
;;
esac
done
答案1
您的主要问题是您认为您正在使用线路设置变量mypath='/test/$input_variable/destination/'
,但它实际上是在 FTP 会话内运行。
您需要将其移至 FTP 命令上方。您还可以检查其后的条件,因为同样的原因无法在那里检查。
答案2
你的问题是你正在尝试设置一个变量里面这里的文档:
ftp -inv $HOST <<- EOF
user $USER $PASSWORD
mypath='/test/$input_variable/destination/'
if ! cd "$mypath"
then
exit 1
fi
mput x.csv
EOF
那不行。将该部分更改为:
mypath="/test/$input_variable/destination/"
ftp -inv $HOST <<-_EOF_
user $USER $PASSWORD
cd "$mypath"
mput x.csv
_EOF_
答案3
将单引号更改为双引号。
代替:
mypath='/test/$input_variable/destination/'
使用:
mypath="/test/$input_variable/destination/"