声明和排版有什么区别?

声明和排版有什么区别?

谁能用现实生活中的例子解释一下declare和之间的区别?typeset

答案1

bashtypesetdeclare完全相同。唯一的区别是它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

相关内容