【问题标题】:"&>" and "<&" token questions“&>”和“<&”标记问题
【发布时间】:2017-05-30 22:42:01
【问题描述】:

我对 & 标记有点困惑,我在我的问题中包含了一个示例。在我的例子的底部,我不能只使用 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<&-

【问题讨论】:

    标签: linux bash redirect io


    【解决方案1】:

    &lt; myfile 将从名为 myfile 的文件中读取

    &lt;4 将类似地从名为 4 的文件中读取

    规则很简单:

    • 如果你有文件名,你应该使用文件打开操作符&lt;&gt;

    • 如果你有文件描述符,你应该使用FD复制操作符&lt;&amp;&gt;&amp;

    注意&lt;&amp; 是一个完全独立的运算符可能会有所帮助。它不是&lt; 应用于任何东西。

    【讨论】:

    • 但是如果我们有 3 $2 的情况 2,这些是文件描述符,我们没有包含与号。还有,为什么大于号和小于号后面都有空格?
    • 它们不是现有的文件描述符。它们只是您存储打开文件名“$1”的结果的地方。如果您想复制现有的 fd,则可以使用 &lt;&amp;
    猜你喜欢
    • 2012-03-28
    • 2020-04-28
    • 2023-03-08
    • 2014-08-24
    • 2016-06-06
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多