![Expect命令:设置主机的多行环境变量](https://linux22.com/image/168370/Expect%E5%91%BD%E4%BB%A4%EF%BC%9A%E8%AE%BE%E7%BD%AE%E4%B8%BB%E6%9C%BA%E7%9A%84%E5%A4%9A%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
所以我在环境变量中设置了 RSA 令牌。我想在远程机器的环境中设置它。我尝试了下面的脚本来设置,但它只设置第一行-----BEGIN OPENSSH PRIVATE KEY-----
:
#!/usr/bin/expect -f
spawn ssh -tt ec2-user@$::env(EC2_INSTANCE)
send "export RSA_KEY=$::env(MY_KEY)\r"
expect -re ".*\$"
如何设置全部内容?
答案1
将其值放在单引号中:
send "export RSA_KEY='$::env(MY_KEY)'\r"
expect -re {.*\$}
注意{.*\$}
代替".*\$"
;你的".*\$"
意志会变成.*$
和匹配任何事物,包括空字符串。
如果MY_KEY
环境变量可以包含'
s,您可能需要转义它们:
send "export RSA_KEY='[regsub -all {'} $::env(MY_KEY) {'\''}]'\r"
expect -re {.*\$}