보내기 위해 파일에 넣으려고 하는 데이터베이스에서 일부 숫자를 반환하는 쿼리가 있습니다. 그러나 일부 값은 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
.
또한, 그렇게 하지 않을 타당한 이유가 없고 자신이 무엇을 하고 있는지 확실히 알고 있지 않는 한 항상 쉘 변수에 대한 모든 참조를 인용해야 합니다(위에 표시된 대로).