将shell脚本的输出重定向到程序

时间:2016-11-12 17:59:54

标签: linux shell

我有一个名为try: radius = input("Enter circle radius:") except (ValueError, NameError): print "That's not a number!" get_area(radius) 的文件。在文件中,我有从1到1000的所有数字。我有一个程序,在200轮中插入1到5。

我尝试了以下脚本:

numbers.txt

按照预期,它会在200中打印1到5的数字。

现在我需要将输出重定向到我的程序的输入。我试过这个:

while read p; do
  echo $((p % 5 + 1))
done <numbers.txt

但它没有错误:

  

意外标记“do”

附近的语法错误

如何使用循环输入运行./my-program < while read p; do echo $((p % 5 + 1)) done <numbers.txt

3 个答案:

答案 0 :(得分:1)

./my-program < ... - 此语法仅适用于文件,在您的情况下,您希望使用此类重定向:

while read p; do
  echo $((p % 5 + 1))
done <numbers.txt | ./my-program

答案 1 :(得分:1)

您可以在Korn shell,Zsh或Bash中使用process substitution

./my-program < <(
  while read p; do
    echo $((p % 5 + 1))
  done <numbers.txt
)

答案 2 :(得分:1)

您可以尝试使用for循环 像

for i in `cat numbers.txt`; do
   echo $[ $i % 5 + 1 ]
done