我正在尝试自动运行一个shell脚本,该脚本会在执行的各个点处获取一些用户输入。 我想到的基本逻辑在下面复制,但这仅适用于一个输入。我想以递归方式运行它,直到原始脚本完成执行后收到shell提示符。我递归地说,因为提示输入和输入本身的问题将始终是相同的。
#!/usr/bin/expect
spawn new.sh $1
expect "Please enter input:"
send "my_input"
分享任何捷径/简单方法来实现这一目标将受到高度赞赏。
答案 0 :(得分:1)
您不需要expect
来执行此操作 - read
可以从管道以及用户输入中读取,因此您可以通过管道将输入传递到脚本。示例脚本:
#!/bin/bash
read -p "Please enter input: " input
echo "Input: $input"
运行脚本会提示正常输入,但如果你输入它:
$ echo "Hello" | sh my_script.sh
Input: Hello
你说你的输入总是一样的 - 如果是这样的话,你可以使用yes
(只是反复打印一个给定的字符串)来重复传递你的脚本输入:
yes "My input" | sh my_script.sh
这将运行my_script.sh,脚本中的任何read
命令都将显示为“我的输入”。