有没有办法直接在要完成自动化的expect
a 中使用命令,而不是编写 a并使用命令来触发from ?bash script
expect script
spawn
bash script
expect script
就像完全在一个脚本中一样?
答案1
您可以expect
从 shell 脚本开始,但expect
无法控制不是 的子进程的 shell 的输入expect
。
另一方面,很少有理由expect
在 shell 本身上使用,无论您想要做什么,expect
都可以直接从 shell 执行。您很可能不想expect
在 shell 本身上使用,而是在从 shell 启动的命令上使用。因此,您可以expect
从 shell 调用并expect
调用您想要控制的程序expect
。
答案2
如果您不需要脚本具有交互性,则更read var
改为var="fixed value"
.
或者,您可以通过将值传递到脚本标准输入来自动执行输入:
./myscript.sh <<END_OF_INPUTS
input string 1
input string 2
... and so on
END_OF_INPUTS
或者,您可以将这些值放入脚本本身:
$ cat test.sh
#!/bin/sh
read -p "this one is interactive: " first
exec 0<<END_INPUT
foo
bar
END_INPUT
read -p "2nd input is automated: " second
read -p "3nd input is automated: " third
echo "1st input: $first"
echo "2nd input: $second"
echo "3rd input: $third"
echo done
$ sh test.sh
this one is interactive: I type this
1st input: I type this
2nd input: foo
3rd input: bar
done
Expect 是一个非常有用的工具,但真正需要它的地方并不多。