gpt4 book ai didi

linux - 如何使用 linux bash 将字符串存储到包含 $ 的变量中

转载 作者:太空狗 更新时间:2023-10-29 11:41:28 26 4
gpt4 key购买 nike

我正在尝试使用 bash 脚本将密码发送到远程服务器。在我们被要求将密码更改为更复杂的密码并且其中一个新密码包含 $ 字符(即 P@$sw0rd)之前,这种方法一直有效。

我包含了不再有效的代码段:

password="'P@$sw0rd'"

spawn ssh "$deviceType@$device"
expect {
"*no)?" {send "yes\r"}
"*assword:" {send "$password\r"}
"*assword:" {send "$password\r"}
}

每次发送密码时,远程系统都会尝试查找变量 $sw0rd

我知道问题出在密码本身的 $ 字符上,但是有没有办法在不将我们所有远程服务器上的这个密码更改为不包含$ 字符?

我尝试了不同的方法来存储 $ 字符:

password='P@$sw0rd'
password=P@$sw0rd
password="'P@\$sw0rd'"
password="P@\$sw0rd"
password='P@\$sw0rd'
password=P@\$sw0rd

这些都不起作用。

请帮忙。

最佳答案

当你使用 spawn命令有可能你实际上有 expect脚本而不是 bash脚本。这应该适用于 expect :

set password P@\$sw0rd

当然你也必须使用expect通过添加 #!/usr/bin/env expect 来运行该脚本在顶部或使用 expect直接在终端中:expect <SCRIPT>

关于linux - 如何使用 linux bash 将字符串存储到包含 $ 的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469119/

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