빈 매개변수를 기본값("0")으로 대체

빈 매개변수를 기본값("0")으로 대체

보내기 위해 파일에 넣으려고 하는 데이터베이스에서 일부 숫자를 반환하는 쿼리가 있습니다. 그러나 일부 값은 null로 반환되며 이러한 경우 일부 계산을 "0"으로 대체해 보았습니다. 이 값을 "0"으로 설정할 수 있는 유일한 경우는 실제 값이 있는 변수에 대해 동일한 작업을 수행할 수 있다는 것입니다. 아래는 내 코드와 출력입니다. 내가 뭘 잘못했나요? (Bash/Linux의 새로운 기능입니다.)

I use these commands:           and I get this output:
echo ${awb-$defaultbase}            NULL
echo ${gachurn-$defaultbase}        2 - 
echo ${awb+$defaultbase}            0
echo ${gachurn+$defaultbase}        0 - 
echo ${awb:-$defaultbase}           NULL
echo ${gachurn:-$defaultbase}       2 - 
echo ${awb:+$defaultbase}           0
echo ${gachurn:+$defaultbase}       0 - 
echo $awb                           NULL
echo $gachurn                       2

첫 번째 값은 0이고 두 번째 값은 2가 되기를 원합니다.

답변1

NULL데이터베이스에서 반환되는 내용은 4자리 문자열이며, 이는 쉘에서 "널 문자열"로 해석되지 않습니다.

$awb그것이 맞는지 확인 NULL하고 0으로 바꾸려면 다음을 수행하십시오.

[ "$awb" = 'NULL' ] && awb=0

글보다 조금 짧네요

if [ "$awb" = 'NULL' ]; then
    awb=0
fi

에서는 bash다음과 같이 문자열 교체를 수행할 수도 있습니다.G맨이 제안한다:

awb=${awb/NULL/0}

답변2

"${awb/NULL/0}"간단한 검색 및 바꾸기를 수행하는 를 사용할 수 있습니다 . 이렇게 하면 하위 문자열을 찾아 바꿀 수 있으므로 변수 값이 이면 을 NULL_and_VOID얻게 됩니다 0_and_VOID.

또한, 그렇게 하지 않을 타당한 이유가 없고 자신이 무엇을 하고 있는지 확실히 알고 있지 않는 한 항상 쉘 변수에 대한 모든 참조를 인용해야 합니다(위에 표시된 대로).

관련 정보