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.
以下はシェルスクリプトです -
#!/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
最大の問題は、line settings変数を使用していると思います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/"