在Linux中从.txt文件重定向到可执行文件
我有一个文本文件,其中包含从 1 到 1000 ( numbers.txt) 的所有数字,我有一个可执行文件 ( ex2-1),当它获取从 1 到 1000 的所有数字时(它将数字作为输入一个一个),它会打印“完成! ”。当您运行该文件时,您会看到:
please insert 1:
如果您输入 1,它会显示相同但带有 2,如果不是,它将打印“错误输入”并关闭。
我知道如何逐行读取文本文件:
#!/bin/bash
filename='numbers.txt'
while read line; do
echo "$line" #echo is just to show where the number is being saved
done < $filename
但是有什么方法可以重定向,而不是打印到屏幕上,而是转到可执行文件?
回答
您可以在子 shell 中运行所有这些命令,然后通过管道将其输出重定向到与可执行文件的运行实例对应的进程ex2-1:
(filename='numbers.txt'; while read line; do echo "$line"; done < "$filename") | ex2-1
但是,当您逐行读取文件时,您可以简单地cat在文件上运行numbers.txt:
cat numbers.txt | ex2-1
或者更简洁,只需一个过程:
ex2-1 < numbers.txt