Windows 7(64bit)上的Cygwin:没有这样的文件或目录-但是'that'确实为我提供了正确的路径

时间:2019-07-15 12:42:30

标签: bash windows-7 cygwin

切换计算机后,无法正常运行的bash脚本不再起作用。我收到以下错误: 没有这样的文件或目录。

在继续之前,请原谅英语不是我的母语,您可能会发现任何错误。

该脚本在Windows XP下的cygwin中使用。现在,我必须在Windwos 7(64位)下切换到cygwin64。 该脚本用作程序SMSTools3的检查处理程序,以将具有特定格式的文件拆分为多个较小的文件,然后程序将其用于将SMS发送给多个收件人。该脚本直接从SMSTools3的页面复制,并使用软件包formail。

查找错误后,最可能的问题是未设置环境路径以查找正确的路径(/ usr / bin)。因此,我将其添加到路径中,但无济于事。 然后,我删除了包含空格的Windows环境路径中的其他条目,因为这可能是另一种解释,但仍然无济于事。

以下是产生错误的代码的最小示例。


#!/bin/bash

# Sample script to allow multiple recipients in one message file.
# Define this script as a checkhandler.

echo $PATH
which formail

outgoing="/var/spool/sms/outgoing"

recipients=`formail -zx "To:" < "$1"`

我在echo $Pathwhich formail行中添加了行,以显示脚本是否可以找到正确的文件。两种结果看起来都不错,第二条命令为我提供了正确的输出'/ usr / bin / formail'

但是行recipients=...向我抛出错误: 没有这样的文件或目录。

我在使用bash脚本或cygwin方面没有太多经验。因此,如果这个出色的董事会成员可以帮助我解决这个问题,我将非常感激。谢谢大家的帮助。

编辑: 首先,谢谢大家的评论。

其次,对于您的延迟回复,我深表歉意。有问题的计算机还用于其他目的,我的问题是后台例程的一部分,因此我必须等待PC上的“空闲时间”才能进行测试。

对于@shellter而言,ls命令返回了错误:'':没有这样的文件或目录。

@DougHenderson使用的which -a formail以及echo $(哪个-a formail)命令返回了/ usr / bin / formail的“正确”路径。在配方行返回返回checkhandler文件(/usr/local/bin/smsd_checkhandler.sh)的路径之前,echo \ $ 1 = $ 1,配方行之后的同一命令似乎显示一个空字符串($ 1 =)。此外,对配方行的适当更改也不会更改错误。

对于@DennisWilliamson进行的dos2unix转换,我在notepad ++中打开了该文件以使用其内部版本进行转换,但是它向我显示该文件是Unix格式的以Unix样式结尾的unix格式。

0 个答案:

没有答案