kshでtypesetを使用して単純に変数を設定することに違いはありますか?

StackOverflow https://stackoverflow.com/questions/1027869

  •  06-07-2019
  •  | 
  •  

質問

次の2行は完全に同等ですか?そうでない場合、違いは何ですか?多くのシェルスクリプトが番号1を利用しているのを見て、番号2と比べて何が得られるのかと思っていました。

  1. typeset TARGET =" $ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}。$ {ENV} .properties"
  2. TARGET =" $ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}。$ {ENV} .properties"
役に立ちましたか?

解決

typeset は、ローカル変数(「リーク」しない変数)を作成します。これは関数では便利ですが、シェルスクリプトのトップレベルで使用されていることも確認しました。

a=0
function x {
    typeset a=1
}
x
echo $a
function y {
    a=2
}
y
echo $a

印刷されます

0
2

typeset を使用して配列と整数を作成することもできます。

[編集] 一部のシェルで必要なため、 function キーワードが追加されました。シェルに問題がある場合は削除しますが、ほとんどのバージョンで動作するはずです。

他のヒント

シェルスクリプトは緩やかに型付けされた言語であるため(変数にはdatytypeがありません)、typesetを使用して特定の変数を設定し、同様の値のデータ型のみを取得できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top