シェルは、その同じ用法組み込みタイプセット宣言であり、変数のプロパティを設定するために使用されます。しかし、タイプセットではなく、推奨される宣言を放棄してきました。
[変数名=変数値]宣言[+/-] [aAfFgilprtux] :次のように使用宣言コマンドであります
前記-
属性セットを表し、+
キャンセルの特性を示し、aAfFgilprtux
具体的なオプションがあり、その意味は次のとおりです。
オプション
|
意味
|
---|---|
-f [名前] | 予めユーザによってスクリプト内で定義された関数の名前と関数本体を一覧表示します。 |
-F [名前] | リストは唯一のカスタム名を機能します。 |
-g名前 | Shell関数の内部でグローバル変数を作成します。 |
-p [名前] | 表示属性と指定された変数の値。 |
-名前 | 通常の配列として変数を宣言します。 |
-名前 | 連想配列として宣言変数(文字列へのインデックスの添字をサポート)。 |
-i名前 | 変数は整数型として定義されています。 |
-r名前[=値] | 変数は読み取り専用の名前に相当し、読み取り専用(非編集、削除)のように定義されます。 |
-x名前[=値] | 変数は、エクスポート名[=値]に相当する環境変数に設定されています。 |
|
李のために
|
知識ポイント
|
|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-i変数を整数として定義されています |
|
||||||||||||||||
-r変数は、読み取り専用として定義されています (変更、および削除することはできません) |
-rn = 10を宣言 エコー$ N ---> 10 N = 30 --->与えられました -bash:M:読み取り専用変数 |
普通の解除変数を削除することができますが、変更することはできません読み取り専用の変数を削除することはできません | |||||||||||||||
-p表示属性と指定された変数の値 | roaddb @スタンドアロン:〜 $宣言-rr = 10 roaddb @スタンドアロン:〜 $宣言-pr -RR宣言= "10" roaddb @スタンドアロン:〜 $ A = 5 roaddb @スタンドアロン:〜 $宣言-pa 宣言 - = "5" |
||||||||||||||||
-x環境変数として変数を設定します。 | roaddb @スタンドアロン:〜 $輸出ENV_VAR = TEST1 roaddb @スタンドアロン:〜 $宣言-x env_var2 = TEST2 roaddb @スタンドアロン:〜 $ ENV | grepをENV_VAR * ENV_VAR 2 = TEST2 ENV_VAR = TEST1 roaddb@standalone:~$ declare -p env_var2 declare -x env_var2="test2" roaddb@standalone:~$ declare -p env_var declare -x env_var="test1" |
1.使用export或 declare -x可以设置环境变量 2.env可以查看所有的环境变量
|
|||||||||||||||
-f 列出之前由用户在脚本中定义的函数名称和函数体 | |||||||||||||||||
-F 仅列出自定义函数名称 | |||||||||||||||||
-g 在 Shell 函数内部创建全局变量 | 1.全局变量的知识点 1)在 Shell 中定义的变量,默认就是全局变量 2)全局变量的作用范围是当前的 Shell 进程,而不仅仅是当前的 Shell 脚本文件
|
||||||||||||||||
-a 声明变量为普通数组 | roaddb@standalone:~$ arr1=('a' 'b' 'c') roaddb@standalone:~$ echo ${arr1[*]} a b c roaddb@standalone:~$ declare -p arr1 declare -a arr1='([0]="a" [1]="b" [2]="c")' roaddb@standalone:~$ declare -a arr2=('aa' 'bb' 'cc') roaddb@standalone:~$ echo ${arr2[*]} aa bb cc roaddb@standalone:~$ declare -p arr2 declare -a arr2='([0]="aa" [1]="bb" [2]="cc")' |
使用arr1=('a' 'b' 'c')或declare -a arr2=('a' 'b' 'c')的方式创建数组,其效果是一样的 | |||||||||||||||
-A 声明变量为关联数组(支持索引下标为字符串) | roaddb@standalone:~$ declare -A arr3=(['aa']='bb' ['cc']='dd' ['ee']='ff') roaddb@standalone:~$ declare -p arr3 declare -A arr3='([aa]="bb" [ee]="ff" [cc]="dd" )' |