
理解する必要があるスクリプトがありますが、ある時点で次の構文が得られます。
if [ "$PASS_CHAINE" = "TRUE" ]
then echo "Launching DEGAGEMENT" | SLog
cd $INTERFACE_D/bin_cm/deg
$INTERFACE_D/bin_cm/deg/lance_deg 2>&1 ; echo "{@@##}RETURN_REAL_STATUS_SCRIPT=${?}" | SLog
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]
then echo "Error in DEGAGEMENT" | SLog
exit_script
fi
fi
この部分が乱れてecho "{@@##}"
よく理解できませんね。スクリプトはlance_deg
関数の戻りコードをテストしようとしますが、echoコマンドの戻りコードを取得するため、機能しないことがわかります。
私の問題を解決するためにエコー部分を削除することができますが、重要なのは、その部分が{@@##}
何を意味するのかを実際に理解することです。
答え1
該当部分:
echo "{@@##}RETURN_REAL_STATUS_SCRIPT=${?}"
ちょうど印刷してください:
{@@##}RETURN_REAL_STATUS_SCRIPT=x
そのうち最後の値はx
変数の値に置き換えられます$?
。 Bashのマンページから:
? Expands to the exit status of the most recently executed foreground pipeline.
$?
これは、以前に実行されたコマンドの終了コードを含めるための$INTERFACE_D/bin_cm/deg/lance_deg
ものです。0
成功や1
ミスのために集まります。
確認してください:
$ ls file
file
$ echo $? # 0 indicates success
0
$ ls file_not_exist
ls: cannot access file_not_exist: No such file or directory
$ echo $? # >0 is an error
2