我试过
output=$(send "rpm -i mypkg.rpm\r")
但它不起作用。任何想法?
错误消息
")": no such variablean't read "(send ""rpm -i mypkg.rpm
while executing
"output=$(send "rpm -i mypkg.rpm\r")"
答案 0 :(得分:1)
作为already stated by user000001,=
之后的空格字符在bash中不起作用,因为bash会将其解释为带参数的命令。
但是在ssh会话中捕获命令输出有什么意义呢?很可能你想从客户机上得到它,所以这里是代码:
output=$(ssh myhost 'rpm -i mypkg.rpm')
如果你以这种方式执行它们,有些程序会吓坏,那是因为没有终端。您可以使用带有ssh的-t
标志强制进行伪tty分配。
"output=$(send "rpm -i mypkg.rpm\r")"
- 这里的问题是你的引用。您可以通过混合不同类型的引号来解决这个问题。例如:
"output=$(send 'rpm -i mypkg.rpm\r')"
答案 1 :(得分:0)
在Expect
中创建变量的语法是:
set output "some content"
要使用上一个命令运行设置变量output
,您可以执行以下操作:
send "rpm -i mypkg.rpm\r" // send the command
expect '#' // wait for the prompt
set output $expect_out(buffer); // store the output in 'output' variable
我认为Bash
语法在这里不起作用(output=$( command )