Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash脚本的条件部分中的EOT_Bash_Ftp - Fatal编程技术网

bash脚本的条件部分中的EOT

bash脚本的条件部分中的EOT,bash,ftp,Bash,Ftp,所以,我试图让一个ftp脚本工作,但我遇到了一个障碍。以下是脚本: #!/bin/bash HOST='192.168.178.122' USER='ftpuser' PASSWD='passa.2015' DATE=`date +%d-%m-%Y` FILE="archive-"$DATE".tar.gz" prep=0 echo "File is="$FILE echo "Prepare_val="$prep if [ $prep -eq 0 ] then find

所以,我试图让一个ftp脚本工作,但我遇到了一个障碍。以下是脚本:

#!/bin/bash
HOST='192.168.178.122'
USER='ftpuser'
PASSWD='passa.2015'
DATE=`date +%d-%m-%Y`
FILE="archive-"$DATE".tar.gz"

prep=0
echo "File is="$FILE
echo "Prepare_val="$prep
if [ $prep -eq 0 ]
    then
        find Web -maxdepth 1 -mindepth 1 -not -type l -print0 | tar --null --files-from - -cpzvf $FILE

        ftp -n $HOST << EOT
        user $USER $PASSWD
        put $FILE
        quit
        bye
        EOT
fi

如果我删除了EOT部分,它会很好地执行,但是EOT是在不需要用户干预的情况下运行ftp命令的唯一方法。是否有人知道如何在条件中放置EOT而不会导致我得到的错误。

结束的
EOT
必须在行首,前面没有空格或制表符。 试试这个:

        ftp -n $HOST << EOT
        user $USER $PASSWD
        put $FILE
        quit
        bye
EOT

ftp-n$HOST您可以保留缩进以获得更好的可读性,如下所示:

script.bash的内容:

#!/bin/bash
#normal usage
cat <<EOF
abcd
xyz
EOF
echo "*************************"
#using heredoc without script indentation
if [[ true ]]; then
    cat <<EOF
abcd
xyz
EOF
fi
echo "*************************"
#using heredoc with script indentation
if [[ true ]]; then
    cat <<-EOF
    abcd
    xyz
    EOF
fi

底线:使用
还可以尝试使用,
herdeoc分隔符只能用制表符缩进,不能用空格缩进,

#!/bin/bash
#normal usage
cat <<EOF
abcd
xyz
EOF
echo "*************************"
#using heredoc without script indentation
if [[ true ]]; then
    cat <<EOF
abcd
xyz
EOF
fi
echo "*************************"
#using heredoc with script indentation
if [[ true ]]; then
    cat <<-EOF
    abcd
    xyz
    EOF
fi
$ ./script.bash 
abcd
xyz
*************************
abcd
xyz
*************************
abcd
xyz
$