私はUNIXについて読み始めました、そして変数定義に触れました。 Webサイトによると、構文を使用して直接定義されたUNIX変数を指しますvariable_name=value
。
変数に関連するデータ型はありませんか?
答え1
POSIX標準によると、環境変数は関連データ型を持たない一般的な文字列です。
ただし、拡張機能を使用すると、一部のシェル(たとえばbash
、、ksh
など)では、数値、配列などの変数型の入力が可能になりますksh93
。zsh
読み取り専用または事前フォーマットされた変数もサポートできます。
通常、typeset
組み込み関数を使用してdeclare
入力されます。
以下は整数テストの例ですksh93
。
$ typeset -i var
$ var=abc
$ echo $var # non numerical -> set to zero
0
$ var=0xffff # hexadecimal
$ echo $var
65535
$ var=0xffffffff
$ echo $var
-1 # ksh93 integers are 32 bit signed
$ var=2147483649
$ echo $var
-2147483647 # overflow
ルール機能を使用すると、変数ksh93
にカスタムタイプを割り当てることができます。
答え2
シェルスクリプトには1つのデータ型しかありません。すべてがテキストです。さまざまなコマンドは、必要に応じてテキストを異なる方法で解釈できます。
$ [ "1" -eq "01" ] && echo yes || echo no
yes
$ [ "1" = "01" ] && echo yes || echo no
no
最初のテストでは、合計を数値として1
解釈します。 2番目のテストでは、合計を8進数として解釈します。01
2番目のテストではこれを文字列として扱います。