shell脚本中的这一行是做什么的?

时间:2014-01-03 15:27:06

标签: bash shell unix scripting

有人可以向我解释这行代码在我看的shell脚本中做了什么吗?

typeset -i NOTIFY=0

我知道typeset用于声明/显示带属性的变量。我假设这里声明了一个名为NOTIFY的变量,它是一个整数值,并且NOTIFY变量的值被初始化为零。

这可能是错的。

感谢您的帮助

2 个答案:

答案 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")