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

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

回答

bashtypesetおよび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を使用してください。

コメント

  • お願いします。これがbashスクリプトで使用される場所と理由の例をいくつか挙げてください
  • …私が言ったように、それらはまったく同じです。'私がどのように理解しているかわかりません
  • 良いものです。"廃止された"は

man typesetではありません。

  • @ChrisDown、'たまたま、typesetが廃止されたと見なされる理由がわかりませんか?
  • 回答

    declareが悪を回避するのに役立つ場合を知っていますeval可変間接参照

    $ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value 

    コメント

    • これは素晴らしいコメントですが、次の質問にどのように答えますか。 ab typesetdeclare
    • これはすでにChrisDownによって十分に回答されていますが、私の回答は次のような場合です。 '便利です
    • おそらく'はっきりしていませんでした。コメントはコメントであり、回答は回答である必要があります。これはコメントであり、回答ではありません。
    • 私のスニペットは'コメントで明確になりません
    • ただし、変数を割り当てることはできます。タイプセット… declareをタイプセットに置き換えるだけでも同じ結果が得られます。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です