将数据发送到正在运行的shell脚本

时间:2012-06-11 13:13:28

标签: bash shell unix

我一直在运行等待输入的脚本,并且每15秒向标准输出打印“等待输入”。我需要模拟在脚本运行时粘贴stdin中IP地址列表的操作。例如手动我需要执行以下步骤:复制下面的列表,包括最后一个列表元素后的新行,并将其直接粘贴到stdin中。

127.0.0.1
127.0.0.2
127.0.0.3

我尝试过使用管道和重定向(包含\ n和\ r \ n)而没有运气

echo "127.0.0.1\n127.0.0.2\n" | script

script < file

其中file包含相同的ip地址。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用FIFO!

mkfifo /path/to/tmp.fifo
tail -f /path/to/tmp.fifo | script

现在每当你向fifo发送一些东西(来自另一个TTY,来自一个进程,无论如何),就好像你输入了等待的脚本,例如。

echo "127.0.0.1" >> /path/to/tmp.fifo

答案 1 :(得分:0)

使用cat。如果你执行:

cat | script

你可以切入n-paste或输入tty。