シャットダウンコマンドは、LinuxとHP-UXで異なる動作をします。

シャットダウンコマンドは、LinuxとHP-UXで異なる動作をします。

私はHP-UX(B.11.23)からLINUX(Red Hat Enterprise Linux Serverバージョン6.5 - San Diego)への移行プロジェクトを進めています。 Linuxでは、HP-UXコマンドが正しく機能しないことがあります。しかし、次のような場合には、選択肢を見つけるのに苦労しています。

次のコードはスクリプトの例にすぎませんが、コードの最終結果を理解する必要があります。

## Assigning a text value in retval (bad path scenario)_
retval="ERROR"
if [ $retval -eq 7 ]
then
     echo "I am in " $retval
fi
exit $retval

LINUXでこのコードを実行してみてください...

LINUX $> ksh --version
version         sh (AT&T Research) 93u+ 2012-08-01
LINUX $> ksh -x test12.ksh
+ retval=ERROR
+ [ ERROR -eq 7 ]
+ exit ERROR
tpl06429dat05::edwprod::/home/edwprod >echo $?
0
# look here return code of above executed script is 0_

これで、HP_UXでも同じコードが実行されます。

UNIX $> uname -a
HP-UX ipeip06 B.11.23 U ia64 ******** unlimited-user license
UNIX $> strings /bin/ksh | grep Version | tail -2
@(#)Version 11/16/88
UNIX $> ksh -x test12.ksh
+ retval=ERROR
+ [ ERROR -eq 7 ]
test12.ksh[3]: ERROR: bad number
+ exit ERROR
test12.ksh[8]: ERROR: bad number
UNIX $> echo $?
1
# Look here, return code of above executed code is 1

Linuxでは無効なパラメータ(文字列)を渡したため、「exit」コマンドはまったく実行されませんが、HP-UXでは問題ありません。無効なパラメータを持つ「exit」コマンドが実行され、これが無効なコマンドであることを知らせます(echo $?)をこのスクリプトに追加します。この戻りコードは非常に重要です。これは、この戻りコード($?)に基づいてスクリプトが正常に実行されたか(0)を決定するためです。

コードを調整すると問題を解決できることがわかります。しかし、HP_UXで書かれたスクリプトをほぼ15K以上扱うので、ここでは少し難しいです。 OSレベルで何かを変更できますか(パッケージ/パラメータの変更)?どのシステムレベルの変更が必要ですか?

一方、kshのバージョンは異なり、動作が異なります。したがって、この回答は避けるのが最善です。

ベストアンサー1

スクリプトが終了します

exit $retval

retvalそしてそれを文字列(最初の単語は「ERROR:」)に設定します。

~によると仕様がexit内蔵されています。

シャットダウンユーティリティは、符号なし10進整数nで指定されたシャットダウン状態でシェルをシャットダウンする必要があります。 n が指定されているが 0 ~ 255 の値がない場合、終了状態は定義されません。

「定義されていない」とは、異なる実装が異なる結果を提供するのに適しており、時には予想されることを意味する。

バージョンを見ると、kshシャットダウン状態はHP-UX(11/16/88)では1、Linuxインストール(93u +)では0です。 LinuxシステムがHP -UXシステムのように機能するようにするには、以前の方法で実行されている別のkshをインストールする必要があります。ムケシまたは韓国

おすすめ記事