宣言とタイプセットの違いを実際の例で説明できますか。
回答
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
コメント
- これは素晴らしいコメントですが、次の質問にどのように答えますか。 ab
typeset
とdeclare
? - これはすでにChrisDownによって十分に回答されていますが、私の回答は次のような場合です。 '便利です
- おそらく'はっきりしていませんでした。コメントはコメントであり、回答は回答である必要があります。これはコメントであり、回答ではありません。
- 私のスニペットは'コメントで明確になりません
- ただし、変数を割り当てることはできます。タイプセット… declareをタイプセットに置き換えるだけでも同じ結果が得られます。
、
man typeset
ではありません。typeset
が廃止されたと見なされる理由がわかりませんか?