有人可以向我解释这行代码在我看的shell脚本中做了什么吗?
typeset -i NOTIFY=0
我知道typeset用于声明/显示带属性的变量。我假设这里声明了一个名为NOTIFY的变量,它是一个整数值,并且NOTIFY变量的值被初始化为零。
这可能是错的。
感谢您的帮助
答案 0 :(得分:4)
typeset
是一个已弃用的* builtin命令,与declare
相同。
$ help typeset
typeset: typeset [-afFirtx] [-p] name[=value] ...
Obsolete. See `declare'.
所以这个:
typeset -i NOTIFY=0
做同样的事情:
declare -i NOTIFY=0
即,将NOTIFY
声明为整数并将其值设置为0
。
*(help
文本编写者和我不同意过时的含义。因为它似乎仍然存在,但不鼓励使用它,我说它已弃用,而不是已过时 .YMMV)
答案 1 :(得分:2)
除了@ kojiro的回答之外,将变量声明为整数只意味着它只能保存整数。此外,它似乎强制在算术上下文中执行变量赋值,其中$
符号是可选的:
$ declare -i foo
$ unset bar
$ foo=bar # no error assigning a string to foo
$ echo $foo
0
$ bar=5
$ foo=bar
$ echo $foo
5
$ foo++
bash: foo++: command not found
$ foo+=1
$ echo $foo
6
另外,演示了bash的interger-only算法:
$ bar=3.14
$ foo=bar
bash: 3.14: syntax error: invalid arithmetic operator (error token is ".14")