不正なコマンドが与えられない限り、bashスクリプトは機能しません


-1

私が持っているスクリプトが完全に完了するまで(それは私のステータスラインをフリーズ)は動作しません。ただし、ランダムな不良コマンドを追加することにより、例えば

asdfasdf

スクリプトが到達するファイル内の任意の場所(つまりexit 0、コメントの直後またはコメント内ではない)で、スクリプトは完全に機能します(フリーズしません)。

この種の動作の原因は何ですか?また、どうすれば修正できますか?


2
コードを共有しない限り、有用な回答を受け取ることはできません。
グレンジャックマン

Xeにはすでに、グレンジャックマンがいます。ハイパーリンクに従ってください。
JdeBP

コードへのリンクは、SuperUserでは受け入れられていません。リンクが腐敗。訪問者はクリックして質問の内容を確認する必要はありません。
トリプリー

1
あなたのスクリプトは長く、私には完全には明らかではないいくつかの外部依存関係があるようです。問題を最小限の検証可能な完全な例に減らしてここに投稿することができれば、助けを得る可能性がはるかに高くなります。
トリプリー

シェルスクリプトでの「フリーズ」の典型的な症状は、コマンドが標準入力を読み取り、何も入力していないことです。grep foo意図したような明らかなケースgrep foo fileは簡単に見つけられます。少し難しいケースはgrep foo $file、変数fileが空の場合、特に常に再現されない場合は非常に難しい場合があります。(他の理由でも便利な方法は、適切に引用すること"$file"です。引数がgrep完全に消えない場合、エラーメッセージが表示されます。)
tripleee

回答:


1

この種の問題は、トレース出力を有効にすることで使用できます。これは、コマンドラインの前にを付けることで実行できますbash -x。スクリプトでは-x、bangパスに追加できます。

問題がどこにあるか、またはその可能性が高いことがわかったらset、スクリプト内のコマンドを使用してトレースをオンまたはオフにできます。 set -xトレースをオンset +xにし、オフにします。


これは良いデバッグアドバイスですが、実際にはOPによって投稿された実際の質問に対処するようには見えません。
トリプリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.