スクリプトが環境から変数を取得したいとしましょう。
#!/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
これが私が受け入れることができるものです。