이해해야 할 스크립트가 있는데 어느 시점에서 다음과 같은 구문을 얻게 됩니다.
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