shell脚本错误(:未找到[没有这样的文件或目录])

shell脚本错误(:未找到[没有这样的文件或目录])

我在 Linux 服务器上使用以下脚本。这是给予:

: not found [No such file or directory]

这是脚本:

# ------------------------------------------------------------------
# K.Sugunan Host health check
#           Description
#
#           This script to initiate health check on servers.
#           It will check for CPU, memory and some connectivity with 
#           up stream and down stream system.
#
# ------------------------------------------------------------------

# Applying initial variables and loading config parameters
DOCROOT=$(pwd)"/"
TIME_NOW=$(date +"%Y-%m-%d %H:%M:%S")

echo $DOCROOT

. $DOCROOT"config/main.sh"
. $DOCROOT"config/web.sh"
. $DOCROOT"config/telnet.sh"

echo $CPU_A

错误将如下所示:

: not found [No such file or directory]
: not found [No such file or directory]
/home/sugunan/phobos/
: not found [No such file or directory]
: cannot open [No such file or directory]os/

我使用以下方法来运行脚本

ksh poc.sh
sh poc.sh
./poc.sh

以上所有内容都给出了类似的错误。即使我包括#!/bin/bash仍然存在错误。我#!/bin/ksh也试过了#!/usr/bin/ksh。所有这些都会产生错误。该服务器出现问题的原因可能是什么?

答案1

看起来空行包含一个不可见(不可打印)的字符,并且服务器正在尝试运行它,就好像它是命令的名称一样;因此出现错误: not found [No such file or directory]。删除空行或确保它们确实是空的。

编辑:OP的评论证实确实如此,因为代码是在Windows下编写的。在 Windows 上,ASCII 文本文件以换行符 + 回车符结束每一行,而 UNIX 仅使用换行符。

要解决此问题,您可以:

  • 直接将代码复制并粘贴到Linux下的编辑器上
  • 确保将 Windows 编辑器设置为将行尾字符转换为 UNIX 标准
  • 使用该dos2unix命令将 Windows ASCII 文件转换为 UNIX 文件

相关内容