版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
示例的脚本里,实际上bash在调用时,会把$j和$i都展开了,所以实际上puts$j会被展开成puts1,puts$i会被展开成puts($i是空的)。
并不是表面上看到的$j变量传入给了expect。
而对于bash来说,如果要在Bash的Here-Documents里不展开变量,可以采用类似如下方法:
#!/bin/bash
/usr/bin/expect<<\EOF
seti1
puts"iis$i"
EOF
可以注意到这段代码把puts$j去掉了(因为加入的话,j在expect里是未定义的,因此会报错)。
可以参考:
[1]What'sthedifferencebetween<<EOFand<<\EOFheredocsinshell:https://stackoverflow.com/questions/31679384/whats-the-difference-between-eof-and-eof-heredocs-in-shell
[2]bashEOF的几种用法:http://blog.csdn.net/eyf0917/article/details/38399335
[3]BashReferenceManual,3.6.6HereDocuments:https://www.gnu.org/software/bash/manual/bash.html#Here-Documents