在密码中使用 $

在密码中使用 $

假设我的服务器的密码是Abcd$1234

我正在尝试使用 shell 脚本中的以下内容将文件从其他服务器 ftp 到我的服务器

ftp -inv (IP) << EOF
user Username Abcd$1234

"lines to ftp file"

bye

我无法进行 ftp。我尝试将密码替换为Abcd\$1234和 ,"Abcd\$1234"但没有用。

但我可以在没有 ftp 的情况下登录到我的服务器(只是为了验证密码是否有效)

任何人都可以帮忙吗?我想$不惜一切代价在我的密码中使用

答案1

这里的文件。 cat <<EOF后面是几行文本,后面是EOF新行上的文字字符串,不缩进。 EOF 之间的部分作为标准输入传递给命令。如果“EOF”被“引用”,则不会进行替换;否则他们就是。请参阅 <<- 了解缩进类型。

所以..

    ftp -inv (IP) <<'EOF'
    user Username Abcd$1234

    "lines to ftp file"

    bye
   EOF

应该有效并且将被$视为字面意思$。它不会将其作为变量来引用。

答案2

而不是这里的文档,尝试这样的事情:

    pw='Abcd$1234'

    exec 6>&1
    ftp -nvi >&6 2>&6 |&

    print -p open Server
    print -p user User $pw

    "lines to ftp file"

    print -p bye

相关内容