web-dev-qa-db-ja.com

シェルスクリプトエラー(:見つかりません[そのようなファイルまたはディレクトリはありません])

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も。これらすべてがエラーを引き起こします。このサーバーの問題の理由は何ですか?

6
sugunan

空の行に非表示(印刷不可)の文字が含まれているように見え、サーバーはそれをコマンドの名前のように実行しようとしています。したがって、エラー: not found [No such file or directory]。空の行を削除するか、それらが本当に空であることを確認してください。

編集:OPのコメントは、コードがWindowsで記述されているため、実際にそうであることを確認しています。 Windowsでは、ASCIIテキストファイルは各行を改行+復帰文字で終了しますが、UNIXは改行のみを使用します。

これを解決するには、次のいずれかを行います。

  • linuxのエディタでコードを直接コピーして貼り付けます
  • 行末文字をUNIX標準に変換するようにWindowsエディターを設定してください。
  • 使用 dos2unixコマンドでWindowsを変換するASCIIファイルをUNIXのファイルに変換する
7
dr_