如何将接受参数的expect脚本嵌入到bash shell脚本中?
我正在编写一个bash脚本,它与其他许多东西一样使用expect来自动运行二进制文件,并通过回答安装程序提示来安装它 当在bash脚本中使用命令“expect$expectscriptname$Parameter”调用expect脚本时,我能够使expect脚本正常工作。但是,我希望将expect脚本嵌入shell脚本,而不必为作业维护两个单独的脚本文件。我四处搜索,发现将expect嵌入bash脚本的过程是声明一个变量,如下面的VAR,然后回显它:如何将接受参数的expect脚本嵌入到bash shell脚本中?,bash,shell,arguments,embed,expect,Bash,Shell,Arguments,Embed,Expect,我正在编写一个bash脚本,它与其他许多东西一样使用expect来自动运行二进制文件,并通过回答安装程序提示来安装它 当在bash脚本中使用命令“expect$expectscriptname$Parameter”调用expect脚本时,我能够使expect脚本正常工作。但是,我希望将expect脚本嵌入shell脚本,而不必为作业维护两个单独的脚本文件。我四处搜索,发现将expect嵌入bash脚本的过程是声明一个变量,如下面的VAR,然后回显它: VAR=$(expect -c " #con
VAR=$(expect -c "
#content of expect script here
")
echo "$VAR"
1) 我不明白echoing$VAR实际上是如何运行expect脚本的。有人能解释一下吗?2) 我不知道如何将$Parameter传递到VAR或echo语句中。这是我主要关心的问题 有什么想法吗?谢谢。在bash中,构造
$(cmd)
运行指定的命令并捕获其输出。它类似于倒勾符号,尽管有一些细微的区别。因此,对VAR的赋值就是运行expect命令的内容:
从bash手册页面:
当老式的反报价表
如果使用替换,则使用反斜杠
保留其字面意义,除了
后跟$、或\时。这个
第一个后引号前面没有
反斜杠终止命令
替代。当使用
$(命令)`表格,所有字符
括号之间构成了
指挥部;没有人受到特殊对待
这就是它工作的原因:bash注释字符(#)在$(…)
中不被视为注释字符
编辑
传递参数:把它们放进去。例如,考虑这个脚本:
foo="Hello, there"
bar=$(echo "
# $foo
")
echo $bar
如果运行该脚本,它将打印:
# Hello, there
因此,$foo
的值在引号中被替换。这同样适用于expect
脚本。在bash中,构造$(cmd)
运行指定的命令并捕获其输出。它类似于倒勾符号,尽管有一些细微的区别。因此,对VAR的赋值就是运行expect命令的内容:
从bash手册页面:
当老式的反报价表
如果使用替换,则使用反斜杠
保留其字面意义,除了
后跟$、或\时。这个
第一个后引号前面没有
反斜杠终止命令
替代。当使用
$(命令)`表格,所有字符
括号之间构成了
指挥部;没有人受到特殊对待
这就是它工作的原因:bash注释字符(#)在$(…)
中不被视为注释字符
编辑
传递参数:把它们放进去。例如,考虑这个脚本:
foo="Hello, there"
bar=$(echo "
# $foo
")
echo $bar
如果运行该脚本,它将打印:
# Hello, there
因此,$foo
的值在引号中被替换。这同样适用于expect
脚本。尝试以下操作:
#!/bin/sh
tclsh <<EOF
puts $1
EOF
#/垃圾箱/垃圾箱
tclsh尝试以下方法:
#!/bin/sh
tclsh <<EOF
puts $1
EOF
#/垃圾箱/垃圾箱
tclsh您是否考虑过只编写一个expect脚本,而不是bash脚本和expect脚本
Expect是Tcl的超集,这意味着它是一种功能齐全的编程语言,你可以用它做任何你可以用bash做的事情(对于你做不到的事情,你可以总是执行bash命令。你不必只为了“Expect”而使用Expect事情您是否考虑过只编写一个expect脚本而不是bash脚本和expect脚本
Expect是Tcl的超集,这意味着它是一种功能齐全的编程语言,你可以用它做任何你可以用bash做的事情(对于你做不到的事情,你可以总是执行bash命令。你不必只为了“Expect”而使用Expect事物好的。不知道倒勾符号的替代方法。谢谢。关于将shell参数传递给expect有什么想法吗?好的。不知道倒勾符号的替代方法。谢谢。关于将shell参数传递给expect有什么想法吗?