以下のスクリプトは、私のインフラストラクチャのすべてのサーバーで正しく実行されます。
しかし、最近実行を完了できず、シェルがksh
あるAixサーバーで停止することがわかりました。
cat myscript.sh
export LOG="./test.log"
echo "Starting"
exec >$LOG 2>&1
echo "Completed"
このスクリプトを実行する方法は次のとおりです。
user1@myhost# . /app/myscript.sh
Output: Starting
<hangs here>
このスクリプトをAiX、Solaris、Linuxなどのさまざまな種類のオペレーティングシステムで実行したいと思います。
注:このスクリプトは、自動化に使用するリモートサーバーでデプロイされ実行されます。 SSH を使用してリモートで実行する場合とローカルで実行すると、上記のようにスクリプトが中断されます。
一般的な解決策を提案できますか?
答え1
コマンド.
に現在のシェルセッションにスクリプトの内容がそのまま含まれています。行の1つがリダイレクトされます。標準出力そして標準エラーしたがって、これは現在のシェルに適用されます。ぶら下がっているわけではありません。ただ何も表示しないだけです。
一般的に言えば、.
スクリプトを実行する方法ではありません。代わりに実行可能にし、#!
一番上に行を追加して実行に使用されたシェルを識別し、次のように呼び出します(コマンド/app/myscript.sh
なし)。.