Linux中从.txt文件重定向到可执行文件
我有一个文本文件,其中包含从1到1000的所有数字(Linux中从.txt文件重定向到可执行文件,linux,bash,Linux,Bash,我有一个文本文件,其中包含从1到1000的所有数字(numbers.txt),我有一个可执行文件(ex2-1),当它获取从1到1000的所有数字时(它逐个获取输入的数字),它会打印“完成!”。 运行该文件时,您会看到: please insert 1: 如果输入1,则显示相同的内容,但带有2,否则将打印“错误输入”并关闭 我知道如何逐行读取文本文件: #!/bin/bash filename='numbers.txt' while read line; do echo "$line&
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
#/bin/bash
filename='numbers.txt'
读行时;做
echo“$line”#echo只是显示号码保存的位置
完成<$filename
但是有没有办法重定向,使其不被打印到屏幕上,而是转到可执行文件?您可以在子shell中运行所有这些命令,然后通过管道将其输出重定向到与可执行文件的运行实例相对应的进程
ex2-1
:
(filename='numbers.txt'; while read line; do echo "$line"; done < "$filename") | ex2-1
或者更简洁,只需一个过程:
ex2-1 < numbers.txt
ex2-1
test.sh:line 2:echo:write error:breaked pipe
将其放在一个文件类型sh中,并显示此…@Velanar32原因可能是管道被您的ex2-1
关闭,但它仍有一些数据需要读取。尝试运行ex2-1这两种解决方案都有效谢谢!
ex2-1 < numbers.txt