使用另一个shell脚本编写shell脚本

时间:2014-04-02 10:39:09

标签: shell expect

我正在尝试自动运行一个shell脚本,该脚本会在执行的各个点处获取一些用户输入。 我想到的基本逻辑在下面复制,但这仅适用于一个输入。我想以递归方式运行它,直到原始脚本完成执行后收到shell提示符。我递归地说,因为提示输入和输入本身的问题将始终是相同的。

#!/usr/bin/expect
spawn new.sh $1
expect  "Please enter input:"
send "my_input"

分享任何捷径/简单方法来实现这一目标将受到高度赞赏。

1 个答案:

答案 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命令都将显示为“我的输入”。