型変数と多次元配列をサポートするシェルはありますか?

型変数と多次元配列をサポートするシェルはありますか?

変数型と多次元配列の区別をサポートするシェルはありますか?

少なくとも文字列、整数、浮動小数点、doubleを区別する必要があります。

次のコマンドは異なる必要があります。command 1そしてcommand "1"変数型がサポートされているかどうか。fun(1)などのAC関数に似ていますfun("1")。または、2つの別々のシェルと呼び出し関数の構文が必要です。

答え1

パールシェルスカラー、リスト、ハッシュの3種類の変数がサポートされています。

Perlシェル(psh)は、bashや他のシェルの側面をPerlスクリプトの機能と組み合わせます。

そして

Perlシェルは、Unixシェルの対話型機能とPerlの強力な機能を組み合わせたシェルです。目標は、通常のシェルアクティビティで期待どおりに機能するフル機能のシェルを作成することです。ただし、Perl ShellはPerl構文と機能を使用して、制御フローステートメントやその他のコンテンツを処理します。

文字列、整数、浮動小数点、ダブルスを大きく区別しません。[1]、Perlのように必要に応じてシームレスに変換します。

自動変換がエラーであるか、文字列、数値、正規表現の比較に他の演算子が十分でない場合、シェルが数字と文字列を区別する必要がある1理由を知ることは困難です。他の殻と"1"同様に。bash

[1]次の専門モジュールを確認してください。数学::BigFloat浮動小数点型に特別な処理が必要な場合。または数学::Bigint非常に大きな整数の場合。

答え2

タイプを正確に区別することと迅速な入力を可能にすることの間には緊張感があります。シェルは高速入力に適しています。シェルの目的は、できるだけ少ない文字を使用してワンタイムタスクを簡単に完了できるようにすることです。1数値ではなく文字列(プログラムに渡す)が必要なので、引用符を追加するのは面倒です。

Ksh、bash、zshには型変数があります。ただし、これらの変数は追加の検証を含む文字列にすぎません。整数変数を算術式以外の値に設定しようとすると、エラーが発生したり、時には値が0になることがあります(特に、定義された変数ではない場合、有効な識別子は0に置き換えられます)。無効な場合set -u)。

$ integer n
$ n=3
$ echo $n
3
$ n=2+2
$ echo $n
4
$ n=undefined+1
$ echo $n
1
$ n='_!@()#(*#'
mksh: _!@()#(*#: unexpected '!'

Ksh93は、さらに一歩進んでカスタムタイプを定義し(使用typeset -T)、変数値を取得して設定する関数(ルール関数と呼ばれる)を使用して、誤った値を拒否できます。enum限られた数の許容値でタイプを定義するための事前定義されたヘルパーがあります。

$ enum day=(Sunday Monday Tuesday Wednesday Thursday Friday)
$ day d=Monday
$ echo $d
Monday
$ d=monday
ksh93: d:  invalid value monday

ただし、すべての値は文字列として透過的に使用できます。これを望まない場合は、自動的にシェルとしての言語値を減らします。シェルの究極の目的は、コマンドライン引数が文字列である別のプログラムを実行することです。ただし、一部のインタラクティブ環境では、他のプログラムを起動することはデフォルトの操作と見なされず、自動的に文字列に変換されません。私はいくつかリストしました。* nix用のオブジェクト指向シェル

関連情報