【问题标题】:Bash: What does "file < FILE > FILE.extension &" means?Bash:“file < FILE > FILE.extension &”是什么意思?
【发布时间】:2023-03-21 22:18:01
【问题描述】:

我正在运行 AutoPhrase,在运行 auto_phrase.sh shell 脚本后,我收到以下错误

回溯source后,我发现导致上述错误的这一行(line 32)

我只知道它正在做类似的事情:

文件 FILE.extension

然而,我不明白这一行发生了什么。

谁能给我解释一下?我该如何解决这个问题?

【问题讨论】:

    标签: bash command


    【解决方案1】:

    这里的问题似乎是./bin/tree-tagger 不存在。请注意./bin/bin 不同。

    话虽如此,您对file &lt; FILE &gt; FILE.extension 所做的问题的答案是不相关的,但这些是 bash 中的重定向。 FILE 通过管道将&lt; 传送到file$STDIN 中,并且将&gt; 的输出定向到文件FILE.extension

    通过安装./bin/tree-tagger 或适当地重定向其路径来解决错误。

    【讨论】:

      【解决方案2】:

      至于标题中的实际问题,命令的意思是

      • ./cmd/tree-tagger-english 运行这个命令...
      • &lt; ... 标准输入来自 ...
      • $f ... 一个 (incorrectly unquoted) 变量,应该包含一个文件名 ...
      • &gt; ... 标准输出重定向到 ...
      • $f.tagged ... 由 $f 的(仍然不正确地未引用的)值命名的文件,并在末尾附加了字符串 .tagged ...
      • &amp; ... 作为后台工作。

      显然./cmd/tree-tagger-english 又多次尝试执行一个不存在的命令。

      可能指令告诉你在与你实际运行它的目录不同的目录中运行它;但这显然只是一种猜测。另一个相当常见的情况是在安装过程中发生了一些故障,但您没有注意到(因此这些位置中应该存在的一些文件实际上并不存在......磁盘已满?权限错误?)

      代码包含引用错误的事实表明代码也很可能只是错误。

      【讨论】:

      • 在这个特定的例子中,引用(虽然是好的做法)看起来没有必要。该脚本之前生成了专门命名的文件,其中不包含空格/特殊字符等。
      • @borrible 不,不能保证通配符不匹配不是由脚本本身或其依赖项创建的文件。链接的脚本也包含了相当多的其他 shell 编程反模式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 2012-07-03
      • 2014-11-25
      • 1970-01-01
      • 2021-03-19
      • 2020-12-28
      相关资源
      最近更新 更多