exec 无法与输入重定向配合使用

exec 无法与输入重定向配合使用

我正在尝试使用重定向运算符和 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,然后希望它自己弄清楚如何处理它 ;)

相关内容