![声明和排版有什么区别?](https://linux22.com/image/29548/%E5%A3%B0%E6%98%8E%E5%92%8C%E6%8E%92%E7%89%88%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
谁能用现实生活中的例子解释一下declare
和之间的区别?typeset
答案1
中bash
、typeset
和declare
完全相同。唯一的区别是它typeset
被认为是过时的。
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
手册页甚至将它们一并列出:
declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes.
typeset
可移植到其他一些 shell,例如ksh93
.如果您的目标是跨 shell 可移植性,请使用typeset
(并确保您调用它的方式是可移植的)。如果您不关心这种可移植性,请使用declare
.
答案2
declare
我知道一个有助于避免邪恶的案例eval
:变量间接:
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value