シェルスクリプトの変数とテスト


以前のポストでは、シェルスクリプトの基礎を学び、最初のシェルスクリプトを書きました.


この記事では、シェルスクリプトの変数から始めましょう

変数とは


変数は、名前を持つストレージの場所です.
変数を名前の値ペアとみなします.VARIABLE_NAME="Value"変数の名前は大文字小文字を区別します.一般的な慣例はすべての大文字で使用することです.

さて、どうすればこれらの変数をスクリプトで使うことができますか?


変数は、前の変数名で$で使用できます.$<VARIABLE_NAME>例を見てみましょう.
#!/bin/bash
SHELL_NAME="bash"
echo "I am using $SHELL_NAME scripting!"
出力:
>./VariablesDemo.sh
I am using bash scripting!
我々は、巻き毛で名前を囲むこともできます${<VARIABLE_NAME>}その場合、上の例は次のようになります.
#!/bin/bash
SHELL_NAME="bash"
echo "I am using ${SHELL_NAME} scripting!"
出力:
>./VariablesDemo.sh
I am using bash scripting!

カーリーは必須ですか?


いいえ、いくつかのケースでは、必要があります.いつ、私はあなたを示す
変数を別の文字列に連結したい場合は、かすかな括弧を使用しなければなりません.
「私は自分のマシンにスクリプトを書いています」と書いておかなければなりません.echo "I am ${SCRIPT}ing on my machine"あなたが$SCRIPTingを書くならば、その場合、ストリング242479142が名前となるので、我々はその名前で変数を持っていないので、その場所に何も置かれません.

変数へのコマンドの出力の割り当て


コマンドの出力を変数に代入するにはSCRIPTingを使います.
#!/bin/bash

SHELL_NAME="bash"
USER_NAME=$(whoami)
echo "$USER_NAME is using ${SHELL_NAME} scripting!"
出力
> ./VariablesExample.sh
twinklekailashlahariya is using bash scripting!

変数命名規則



ドント
  • は、
  • の数字から始めません
  • 特殊文字を使用しないでください.$(command)だけが許容され、任意の場所
  • にあり得る
    さもなければ、あなたが望むように、あなたのものの変数を狂って、名前に変えてください.

    シェルスクリプトのテスト


    スクリプトは、座って、一連のコマンドを走らせる努力を取り替えるために作られます.どのような条件のシナリオに基づいて特定のアクションを実行する場合は?手動でコマンドを入力している場合は、前のコマンドのステータスをチェックして、次のコマンドを書き込みます.
    シェルスクリプトでは、テストで同じことを達成することができます.
    条件をテストするには、単に角括弧内に条件を置きます.
    構文= _テストが通過した場合、式は終了ステータス0、すなわちtrueで終了します.
    例を見てみましょう.
    #!/bin/bash
    
    FILENAME=/etc/myFile.txt
    if [ -f "$FILENAME" ]
    then echo "File exist"
    else echo "File does not exist"
    fi
    
    出力:
    > ./TestsExample.sh
    File does not exist
    
    ここで何をしているかを見ましょう.[condition-to-test] :ファイルパスを持つ変数を定義します.FILENAME=/etc/myFile.txt :ファイルが指定されたパスに存在するかどうかを調べるif条件.if [ -f "#FILENAME" ] :ファイルが存在し、通常のファイルであれば、[ -f "#FILENAME" ]が真を返すフラグです.-f :ファイルが存在する場合、コントロールフローはこの状態に入り、“file exists”メッセージを出力します.
    そうでなければ、制御はこのブロックに落ちて、「ファイルは存在しません」メッセージを印刷します.then echo "File exist"のように、このようなテスト条件があります.else echo "File does not exist"文字列の長さは0です-f文字列の長さはゼロです-n STRING文字列は等しい-z STRING文字列は等しくないSTRING1 = STRING2 Integer 1はInteger 2と等しいですSTRING1 != STRING2 integer 1は整数2以上であるINTEGER1 -eq INTEGER2 Integer 1はInteger 2より大きいですINTEGER1 -ge INTEGER2 integer 1は整数2以下であるINTEGER1 -gt INTEGER2 Integer 1はInteger 2より小さいですINTEGER1 -le INTEGER2 Integer 1はInteger 2と等しくありませんINTEGER1 -lt INTEGER2 File 1とFile 2は同じデバイスとinode番号を持っていますINTEGER1 -ne INTEGER2 File 1はFile 2より新しい(変更日).FILE1 -ef FILE2ファイル1はfile 2より古いですFILE1 -nt FILE2ファイルが存在し、ブロックスペシャルですFILE1 -ot FILE2ファイルが存在し、キャラクタスペシャルです-b FILEファイルが存在し、ディレクトリです
    ファイルが存在する-c FILEファイルが存在し、グループIDが設定されます-d FILEファイルは存在して、有効なグループIDによって所有されます-e FILEファイルが存在し、シンボリックリンクである( - lと同じ)-g FILEファイルが存在し、その粘着ビットがセットされて-G FILEファイルが存在し、シンボリックリンクである( - hと同じ)-h FILEファイルは存在して、有効なユーザーIDによって所有されます-k FILEファイルが存在し、名前付きパイプです-L FILEファイルが存在し、読み込み許可が与えられる-O FILEファイルは存在して、0より大きいサイズを持ちます-p FILEファイルが存在し、ソケットです-r FILEファイルが存在し、書き込み許可が与えられる
    ファイルが存在し、実行(または検索)が許可されている
    我々は、我々が条件とループを調べるとき、我々の次のポストでこれらの旗のより多くの例を調べます.
    その時まで.平和✌️