1

我有一个关于我认为是运算符或参数传递者的问题,但谷歌没有发现任何东西。包含在其中的脚本是

#!/bin/sh
ln mopac.in FOR005
mopac >& FOR006
mv FOR006 mopac.out

当我调用“mopac mopac.in”时,程序运行良好,但根据我的需要,使用此脚本在另一个程序中调用 mopac,但似乎输入文件未能通过,因此 mopac 没有运行。我不明白“>&”应该做什么,所以我遇到了故障排除问题。

谢谢。

4

2 回答 2

2

>& FILE不推荐使用bash(从csh)简写> FILE 2>&1,即重定向标准输出和标准错误。(如果/bin/sh不是bash,就像在许多 Linux 发行版上一样,这将引发错误。)较旧的bash(3.0 之前)更喜欢这种形式,所以大多数新人bash仍然理解它,尽管可能最近bash终于删除了它,因为他们似乎终于要删除最近不推荐使用的构造了。

您的脚本根本没有通过mopac.in,但似乎假设mopac将从 读取其输入FOR005,因此用于ln使其在那里可用。也许您应该将脚本更改为mopac.in作为参数读取,就像您直接运行它一样。

于 2012-04-09T06:47:56.553 回答
0

此处说明:http: //tldp.org/LDP/abs/html/io-redirection.html

>&j
  # Redirects, by default, file descriptor 1 (stdout) to j.
  # All stdout gets sent to file pointed to by j.
于 2012-04-09T06:49:26.190 回答