宣言とタイプセットの違いを実際の例で誰でも説明できますか。
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
は、他のシェルに移植可能です。たとえば、ksh93
。シェル間の移植性を目指している場合は、typeset
を使用します(呼び出し方法が移植可能であることを確認してください)。このような移植性を気にしない場合は、declare
を使用してください。
私はdeclare
が悪を回避するのに役立つケースを知っていますeval
:変数の間接参照:
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value