我有一个关于我认为是运算符或参数传递者的问题,但谷歌没有发现任何东西。包含在其中的脚本是
#!/bin/sh
ln mopac.in FOR005
mopac >& FOR006
mv FOR006 mopac.out
当我调用“mopac mopac.in”时,程序运行良好,但根据我的需要,使用此脚本在另一个程序中调用 mopac,但似乎输入文件未能通过,因此 mopac 没有运行。我不明白“>&”应该做什么,所以我遇到了故障排除问题。
谢谢。
我有一个关于我认为是运算符或参数传递者的问题,但谷歌没有发现任何东西。包含在其中的脚本是
#!/bin/sh
ln mopac.in FOR005
mopac >& FOR006
mv FOR006 mopac.out
当我调用“mopac mopac.in”时,程序运行良好,但根据我的需要,使用此脚本在另一个程序中调用 mopac,但似乎输入文件未能通过,因此 mopac 没有运行。我不明白“>&”应该做什么,所以我遇到了故障排除问题。
谢谢。
>& FILE
不推荐使用bash
(从csh
)简写> FILE 2>&1
,即重定向标准输出和标准错误。(如果/bin/sh
不是bash
,就像在许多 Linux 发行版上一样,这将引发错误。)较旧的bash
(3.0 之前)更喜欢这种形式,所以大多数新人bash
仍然理解它,尽管可能最近bash
终于删除了它,因为他们似乎终于要删除最近不推荐使用的构造了。
您的脚本根本没有通过mopac.in
,但似乎假设mopac
将从 读取其输入FOR005
,因此用于ln
使其在那里可用。也许您应该将脚本更改为mopac.in
作为参数读取,就像您直接运行它一样。
此处说明: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.