我对<&和&&令牌和我在我的问题中包含了一个例子。在我的例子的底部,我不能使用< 3和> 4作为cat的参数吗?我知道你不能因为我已经尝试过但我不明白为什么不呢?我没有复制文件描述符3和4,我只是试图从文件描述符3和4重定向输入和输出。为什么我必须在这两个标记中包含&符号?
#!/bin/bash
case $# in
0)
exec 3<&0 4<&1
;;
1)
exec 3< $1 4<&1
;;
2)
exec 3< $1 4> $2
;;
*)
echo "bad"
return 1
;;
esac
cat <&3 >&4
exec 3<&- 4<&-
答案 0 :(得分:1)
< myfile
将从名为myfile
<4
同样会从名为4
规则很简单:
如果您有文件名,则应使用文件打开操作符<
和>
如果您有文件描述符,则应使用FD复制操作符<&
和>&
可能有助于注意<&
是一个完全独立的运算符。它不适用<
。