読み取り用に `'を開けません:そのようなファイルまたはディレクトリはありません


0

RH6で.shファイルを実行しようとして、このエラーが発生しています...

cannot open '' for reading: No such file or directory

私が実行しているスクリプトは、同じディレクトリにある他のスクリプトを内部的に参照しています。を使用して表示できますls -la

注:このスクリプトはRH4で完全に正常に動作しています。スクリプトを実行しようとしている新しい新しいRH6マシンを入手しました。

abc.sh下記の私のスクリプト

. fox_comm_server_details.sh
. fox_comm_topic_names.sh
. fox_comm_sh_tools.sh

他のスクリプト(.sh)ファイルを参照します。

私がabc.shを(withで./abc.sh)実行すると、

fox_comm_server_details.sh: cannot open [No such file or directory]

必要なスクリプトがディレクトリに存在することを確認し、それらに対する権限を持っています。abc.sh以下のように更新した場合...

. ./fox_comm_server_details.sh
. ./fox_comm_topic_names.sh
. ./fox_comm_sh_tools.sh

今回は、ファイルの欠落について不平を言っているのではなく、以下で説明するようにいくつかの異なるエラーがあります...

read_fox_comm_servers_list[134]: read_fox_comm_servers_list_defaults[37]: local: not found [No such file or directory]

read_fox_comm_servers_listそして、次のようにread_fox_comm_servers_list_defaults定義されfox_comm_sh_tools.shている関数です...

function read_fox_comm_servers_list
{
        read_fox_comm_servers_list_defaults
        read_fox_comm_servers_list_overrides
}

function read_fox_comm_servers_list_defaults
{
        local tempfile=/tmp/read_fox_comm_servers_list_defaults.$$
}

上記のエラーを取得します。


3
質問を編集して、実行しようとしているスクリプトを含めてください。
DavidPostill

そして、ls -lコマンドの結果を提供します。また、スクリプトの読み取り許可を取得しましたか?彼らはこの許可なしでは働けません
ロミオニノフ

スクリプトの1行目は何ですか。の場合、システムに#!/bin/sh/bin/sh があるか知っていますか(たとえば、bashかdashか)。... エラーメッセージのとは行番号である134と思われ37ます。135以上の行スクリプト全体をダンプしないのはおそらく正しいでしょうが、エラーがなくなるまでスクリプト(の機能するデバッグコピー)から行を削除しようとしましたか?それを試してください-あなたが最後に削除したことは、おそらく問題の大きな手がかりになるでしょう。
Gマン

回答:


0

暗闇でのショット:理解するのが本当に難しいので、このリンクをクリックて質問を編集してください。

一般に、スクリプト(または添え字)のどこかに変数がファイル名で設定されていないようです。
あなたは''あなたのエラーメッセージで名前なしでから気づくことができます

''を読み取りのために開くことができません:そのようなファイルまたはディレクトリはありません

シェルのデバッグをアクティブにするエラーの場所を検索できます

set -x           # to activate debugging  
./myscript.sh    # here your script invocation  
set +x           # to stop debugging 

1
これはまったく機能しません。シェルオプション(xtraceなど-x)は親から子に渡されないため、これはユーザーが実行中myscript.shであることだけを示し、スクリプトで何が起こるか示しません。(1):そのためには、次のいずれかの必要があるだろうset -x; . myscript.sh; set +x(2)、(おそらくない良いアイデアを)(set -x; . myscript.sh)(3)、(括弧に注意)sh -x myscript.sh、または(4)編集myscript.shおよび追加-x彼女バングラインに(#!/bin/sh上最初の行)。
Gマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.