変数にディレクトリを保存した後、シェルスクリプトに問題があります。

変数にディレクトリを保存した後、シェルスクリプトに問題があります。

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コマンドの上に移動する必要があります。同じ理由でそこで確認できない条件も後で確認できます。

おすすめ記事