如果没有空间beetwen args和重定向,则Bash不正确的行为

时间:2016-07-01 21:09:21

标签: bash command-line io-redirection

我有一个问题。 我编写了一个程序,我必须验证通过命令行传递的一些参数(我正在使用argv[])并使用在stdin上重定向的文件作为输入。 该程序有效,但如果参数与重定向之间没有空格

,则会出现问题
as ./aout -s 30 20< ficso
这是正常的吗?我认为角色<是由bash保留的。

谢谢

2 个答案:

答案 0 :(得分:4)

直接针对这样的重定向运算符的数字将其转换为不同的重定向运算符,在这种情况下,从FD 20而不是FD 0获取其输入。

答案 1 :(得分:3)

写作时

20< filename

这意味着它不是将标准输入(文件描述符0)重定向到文件,而是应该将文件描述符20重定向到文件。

来自manual

  

3.6.1重定向输入

     

输入的重定向导致打开名称来自 word 扩展的文件,以便读取文件描述符 n 或标准输入(文件描述符0)如果未指定 n

     

重定向输入的一般格式为:

  [n]<word