gpt4 book ai didi

bash - bash 脚本的条件部分中的 EOT

转载 作者:行者123 更新时间:2023-11-29 09:19:00 24 4
gpt4 key购买 nike

因此,我正在尝试使 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

当我尝试运行此脚本时,它返回以下错误:

ftp-script.sh: 22: ftp-script.sh: Syntax error: end of file unexpected (expecting "fi")

如果我删除 EOT 部分,它执行良好,但 EOT 是无需用户干预即可运行 ftp 命令的唯一方式。有谁知道如何将 EOT 置于条件中而不会导致我收到的错误。

最佳答案

您可以像这样保留缩进以获得更好的可读性:

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

输出:

$ ./script.bash 
abcd
xyz
*************************
abcd
xyz
*************************
abcd
xyz
$

底线:使用 <<-EOT而不是 <<EOT (注意连字符)以保留缩进

关于bash - bash 脚本的条件部分中的 EOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36054419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com