변수 설정을 해제하고 해당 값을 사용합니다.

변수 설정을 해제하고 해당 값을 사용합니다.

d 파일 에서 source변수에 저장한 특정 명령의 종료 상태를 반환하고 싶습니다 return_val.

네임스페이스를 오염시키지 않도록 이 변수를 설정 해제하고 해당 값을 반환하려면 어떻게 해야 합니까?

답변1

지역 변수(예: ksh, bash 또는 zsh)를 지원하는 셸을 사용하는 경우 모든 코드를 함수에 넣고 모든 변수를 지역 변수로 선언하세요.

일반 sh를 사용하면 eval값을 사용하기 전에 변수 확장을 수행할 수 있습니다. 반품 상태에는 숫자만 포함되므로 까다로운 참조도 필요하지 않습니다.

eval "unset return_status; return $return_status"

답변2

변수 내용의 복사본을 유지하기 위해 STDOUT을 사용합니다.

# Unset a variable and then use its value afterwards
echo $_return_val | { unset _return_val; return "$(cat)"; }

답변3

지역 변수와 함께 함수를 사용할 수 있습니다

return_exit () {
    local code=${!1}
    unset "$1"
    return "$code"
}

그런 다음 다음과 같이 호출하십시오.

return_exit _return_val

답변4

해결책에 대한 귀하의 욕구와 아이디어가 표준의 불특정 부분과 충돌하므로 중간 변수를 사용하여 값을 저장하는 것이 좋습니다.

물론 이는 여러 변수에 메서드를 적용하려는 경우에만 의미가 있습니다. $REPLY쉘에 통합된 다양한 변수를 사용할 수 있습니다 .

{ cmd; }서브쉘을 생성하지 않을 권한이 없으므로 unset이러한 구성을 호출하더라도 메인 쉘에서는 작동하지 않을 수 있습니다.

사용

echo "$_return_val" && unset _return_val

내가 생각하는 모든 경우에 당신의 취향에 맞아야합니다.

관련 정보