シェルスクリプトエラー(:見つかりません[該当するファイルまたはディレクトリなし])[重複]

シェルスクリプトエラー(:見つかりません[該当するファイルまたはディレクトリなし])[重複]

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標準に変換するように設定されていることを確認してください。
  • dos2unixWindows ASCIIファイルをUNIXファイルに変換するには、このコマンドを使用します。

おすすめ記事