期望在 bash 脚本中?

期望在 bash 脚本中?

有没有办法直接在要完成自动化的expecta 中使用命令,而不是编写 a并使用命令来触发from ?bash scriptexpect scriptspawnbash scriptexpect 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 是一个非常有用的工具,但真正需要它的地方并不多。

相关内容