エコ "{@@##}"とはどういう意味ですか?

エコ


理解する必要があるスクリプトがありますが、ある時点で次の構文が得られます。

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

おすすめ記事