스크립트가 환경에서 변수를 가져오길 원한다고 가정해 보겠습니다.
#!/usr/bin/env bash
set -eu
if (( ${A-} )); then
echo true
else
echo false
fi
(empty)
여기에서는 산술 확장이 , 0
, 1
대소문자 또는 기타를 처리하는 데 더 합리적으로 보입니다 .
if [ "${A-}" ] && [ "${A-}" != 0 ]; then
하지만 그 이후에는
$ A='1 - 1' ./1.sh
false
$ A='B = 1' ./1.sh
true
이제 일반적으로 허용하지 않는 변수를 기본적으로 변경할 수 있습니다. 어떤 제안이 있나요? 환경 변수에서 얻은 부울 플래그를 어떻게 처리합니까?
답변1
변수에 int가 포함되어 있는지 확실하지 않은 경우 해당 값을 확인할 수 있습니다.
#!/usr/bin/env bash
set -eu
vint() {
local v
for v; do
if echo "$v" | egrep '[^0-9]' &> /dev/null; then
printf '%s: %s: not an int\n' "$0" "$v" >&2
exit 1
fi
done
}
vint "${A-}"
if (( ${A-} )); then
echo true
else
echo false
fi
이것이 내가 받아들일 수 있는 것입니다.