web-dev-qa-db-ja.com

宣言とタイプセットの違いは何ですか

宣言とタイプセットの違いを実際の例で誰でも説明できますか。

23
Rahul Patil

bashでは、typesetdeclareはまったく同じです。唯一の違いは、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を使用してください。

28
Chris Down

私はdeclareが悪を回避するのに役立つケースを知っていますeval変数の間接参照

$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
3
Gilles Quenot