我正在尝试使用重定向运算符和 exec 命令从文件中输入数据,但它引发了错误
sh-4.3$ cat test
hi this is a test
so wait
sh-4.3$ exec <test
sh-4.3$ hi this is a test
sh: hi: command not found
sh-4.3$ so wait
sh: so: command not found
sh-4.3$ exit
答案1
关键点不是重定向,而是文件的内容。exec
执行您的文件。这意味着,它会查看文件的内容并尝试运行其中写入的命令。但您的文件不包含任何 shell 知道的命令。
它遇到了hi
,但没有这样的命令。所以它告诉你:
sh: hi: command not found
然后,它尝试下一行。它读到“so”,但没有这样的命令。所以它告诉你:
sh: so: command not found
如果您想将文件作为输入交给程序,您需要以某种方式让该程序发挥作用。不要只是将数据扔给 shell,然后希望它自己弄清楚如何处理它 ;)