Bash

當濫用整數變數(通過嘗試將字元串儲存到該變數中)時,Bash shell 是否有辦法拋出執行時錯誤?

  • April 19, 2020

Linux Mint 上的 Bash 4.3 shell:

我意識到 Bash shell 是無類型的,或者俱有非常弱的類型。但是是否可以呼叫 Bash shell(例如使用某些選項),以便當聲明的整數變數被濫用(例如,通過嘗試將字元串儲存到該整數變數中)時,shell 會拋出執行時錯誤?

範常式式碼:

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!```

拋出錯誤的方法是:

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. 它可以讓你在沒有算術語法的情況下進行算術運算,我認為這只會增加一層混亂。

引用自:https://unix.stackexchange.com/questions/581144