整数変数が誤って使用された場合(変数に文字列を保存しようとすると)、Bashシェルで実行時エラーが発生する可能性がありますか?

整数変数が誤って使用された場合(変数に文字列を保存しようとすると)、Bashシェルで実行時エラーが発生する可能性がありますか?

Linux MintのBash 4.3シェル:

Bashシェルは型がないか、型が非常に弱いことを知っています。しかし、Bashシェルを呼び出して(たとえば、特定のオプションを使用して)、宣言された整数変数が誤って使用された場合(たとえば、その整数変数に文字列を格納しようとした場合)、シェルで実行時エラーが発生する可能性がありますか?

サンプルコード:

declare -i age

age=23
echo "$age"   # result is 23
age="hello"
echo "$age"   # result is not the string hello - wish I could get an error message here!```


ベストアンサー1

エラーを発生させる方法は次のとおりです。

set -u
# or
set -o nounset

それから:

$ set -u
$ declare -i age
$ age=hello
bash: hello: unbound variable

しかし、そうであれば、期待どおり常に「動作」するわけではありません。いいえバインドされていない変数:

$ hello=world
$ age=hello
bash: world: unbound variable

$ hello=42
$ age=hello
$ echo $age
42

$ hello=""
$ age=hello
$ echo $age
0

私はその価値がほとんどないと考え始めましたdeclare -i。算術構文なしで算術演算を実行できます。これは混乱を加重するだけです。

おすすめ記事