GNU/Linux >> Linux の 問題 >  >> Linux

LinuxBashShellでDeclareコマンドを使用する方法

この記事では、宣言の使用法について説明します。 bashのコマンドとその使用方法。 宣言 スクリプトに型のような動作を提供するbash組み込みコマンドです。

Javaなどのプログラミング言語の経験がある場合 、 C あなたはシステムのタイプが何であるかを知っているかもしれません。悲しいことに、 bash 強いタイプのシステムはありません。 宣言 コマンドを使用すると、型のような動作を取得したり、変数の属性を設定したりできます。

$ type -a declare

declare is a shell builtin

宣言する便利な機能のいくつかを紹介します オファー。開始して宣言について知るのに適した場所 ヘルプコマンドまたはbashマンページのいずれかを使用します。

$ help declare

declare: declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
    Set variable values and attributes.
    
    Declare variables and give them attributes.  If no NAMEs are given,
    display the attributes and values of all variables.
    
    Options:
      -f	restrict action or display to function names and definitions
      -F	restrict the display to function names only (plus line number and
    		source file when debugging)
      -g	create global variables when used in a shell function; otherwise
    		ignored
      -I	if creating a local variable, inherit the attributes and value
    		of a variable with the same name at a previous scope
      -p	display the attributes and value of each NAME
...

整数型を宣言する方法

変数を整数型として宣言するには、 -iを使用します 国旗。以下の例を見ると、変数ageが整数型として宣言されていることがわかります。別のタイプ(文字列)の値を割り当てようとしたとき )「正しいタイプではありません」というエラーが返されることが予想されます。 」ですが、ここではエラー変数をスローする代わりに、ゼロ(0 )として割り当てられます。 )。はい、これは奇妙な振る舞いであり、期待どおりの動作ではありません。

$ declare -i num=10
$ echo $num
$ num=string     # Reassigning Interger type with string
$ echo $num      ⇒ Zero will be the output

読み取り専用変数を宣言する方法

読み取り専用 –これはプログラミング用語であり、変数に値が割り当てられ、プログラマーまたはマシンによって変更されることはありません。プログラムのライフサイクル全体を通じて同じです。

変数を一定にするには(読み取り専用 -rを使用します フラグ。

$ declare -r num=10
$ num=11
-bash: no: readonly variable

変数を読み取り専用にする別の方法は、読み取り専用を使用することです。 キーワード。

$ readonly os=ubuntu
$ os=arch
-bash: os: readonly variable

Linuxでの小文字と大文字の変換

変数をbashに割り当てる場合、 -l <​​/ code>を使用して、変数を小文字から大文字に、またはその逆に変換できます。 (小文字)および -u (大文字)フラグ。

$ declare -l name="LINUX"
$ declare -u name1="linux"
$ echo $name $name1

インデックス付き/連想配列を宣言する方法

Bashは2種類の配列をサポートしています。 インデックス付き 配列と連想 配列。配列を宣言するには、 -aを使用します (インデックス付き配列)および -A (連想配列)フラグ。 宣言を使用せずにインデックス付き配列を作成できます コマンドですが、連想配列を作成するには、 -Aを指定してdeclareコマンドを使用する必要があります フラグ。

$ declare -a os_name=(Ubuntu Mint Kubuntu lubuntu Debian)
$ echo ${os_name[@]}
$ declare -A os_family
$ os_family["Redhat"]="Fedora"
$ os_family["Arch"]="Manjaro"
$ os_family["Debian"]="Ubuntu"
$ echo ${os_family[@]}

サブシェルへの変数のエクスポート

bashの使用経験がある場合は、exportコマンドを使用して、スクリプトまたはシェルセッションで宣言された変数をサブシェルにエクスポートする人を見たことがあるかもしれません。 宣言を使用してそれを行うことができます コマンドも。

エクスポートするには、 -xを使用する必要があります フラグと+x フラグは属性をエクスポートから削除します。

$ declare -x name=ShellTips
$ sh -c “echo $name”

属性が定義されているかどうかを確認する

属性かどうかを確認できます (可変 -pを使用して定義されているかどうか フラグ。

# Defining a variable
$ a=10;b=20;c=30
 
# Check if a variable is defined or not
$ declare -p a    # single variable check
declare -- a="10"
 
$ declare -p a b c   # check multiple variables
declare -- a="10"
declare -- b="20"
declare -- c="30"

2つのダッシュが表示されます- キーワードを宣言した後。これは、 declare -aのような変数のタイプを表示するためのものです。 (配列)、宣言-n (nameref)。何も宣言されていない場合は、-が表示されます。 。

$ declare -a Iarray
$ declare -A arrray
$ declare -p Iarray Asarray

declare -a Iarray
declare -A Asarray

宣言されていない変数を見つけようとすると、次のエラーがスローされます。

$ declare -p Iarray1
-bash: declare: Iarray1: not found

関数定義を確認する方法

-Fを使用できます および-f 関数が宣言されているかどうかと関数定義を確認するためのフラグ。単純なhelloworld関数を作成しています。

$ function hello_world(){ echo "Linux Geeks"; }
$ declare -F

関数定義を取得するには、 -fを使用できます 国旗。関数名が渡されない場合は、ロードされたすべての関数が出力され、リストから関数定義を取得できます。

$ declare -f hello_world
$ declare -f

この記事は以上です。すぐに別の興味深い記事を取り上げます。


Linux
  1. Linuxgrepコマンドの使用方法

  2. Linuxでhistoryコマンドを使用する方法

  3. LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

  1. LinuxでSuコマンドを使用する方法

  2. UbuntuLinuxで稼働時間コマンドを使用する方法

  3. Linux screen コマンドの使用方法

  1. Linux で制限付き Bash シェルを構成する方法

  2. Linux でシェル エイリアスを使用する方法

  3. Linux でコマンド ライン シェル関数を使用する方法