あなたはおそらくBashシェルスクリプトの変数を知っているでしょう。
他のプログラミング言語やスクリプト言語と同様に、変数を使用してデータを保存し、後でそれらを将来のコマンドで参照します。
name="Linux Handbook"
echo "Hello $name!"
そして、「Hello LinuxHandbook!」が印刷されます。
上記の例以外にも、変数が設定されていないときにデフォルト値を入力したり、単一の変数に複数の値を割り当てたりするなど、変数を使用して実行できることは驚くほどたくさんあります。
bashスクリプトでの変数のこれらの異常で高度な使用法を紹介します。
上記の例を除いて、Bashで見つかる最も一般的なタイプの変数は配列です:
name=("Linux Handbook" "It's FOSS")
上記の例では、両方の Linux Handbook
を割り当てています。 およびIt'sFOSS
name
の値として 変数。
ただし、各値にアクセスするにはどうすればよいですか?
echo $ name
を実行した場合 、最初の値である Linux Handbook
が出力されることがわかります。 。他の値にアクセスするには、変数に別の構文を使用する必要があります。
他の値の取得を開始するには、次のことを理解することから始めましょう。
echo "Hello ${name}!"
これは、変数のすべての値を取得できるようにするための基礎であり、この記事の残りの部分で変数を操作するための残りのメソッドを実行できるようにするためでもあります。
前述の例に戻ると、 $ {variable [number]}
を使用できます。 変数から特定のアイテムをプルする構文:
echo "Hello ${name[1]}!"
これは「HelloIt'sFOSS!」を印刷します
上記の例からまだわからない場合は、配列の最初の項目は実際には1ではなく0から始まります。
したがって、 Linux Handbook
をプルするには 値の場合、位置0でアイテムをプルします:
echo "Hello ${name[0]}!"
同様に、単に [number]
を省略します partは、デフォルトで配列の最初の項目(インデックス0にある項目)に設定するだけです。
そして、それらは、Bash内で実際に見つかるすべての変数タイプを構成します。
それでは、これらの変数を呼び出すときに、実際にそれらの変数を操作して出力を変更する方法を見ていきましょう。
変数が次のように設定されていない場合、変数をデフォルトで特定の文字列に戻すことができます。
${variable:-string}
この例を見てください:
echo "Hello ${name:-nobody}!"
変数name
以降 が設定されていない場合、デフォルトで nobody
になります 上記のコマンドは「Hellonobody!」と出力します。
変数が事前に設定されている場合は、その値が使用されます:
name="Linux Handbook"
echo "Hello ${name:-nobody}!"
上記のコマンドは「HelloLinuxHandbook!」を出力します
変数がであるときに特定の値を返すように変数を設定することもできます セットする。これにより、変数は設定されている場合は常に特定の文字列を出力し、設定されていない場合は何も出力しません。
このメソッドの構文は前のメソッドと似ていますが、 +
を使用します -
の代わりに署名する 。
${variable:+string}
変数名が設定されていないこの例を見てください。したがって、その可変部分については何も出力されず、コマンドの出力は「Hello!」
になります。echo "Hello ${name:+person}!"
上記の例を変更し、変数 name
を設定します 。この特別な方法では、すでに設定されている値を使用せず、指定した値を使用します。
name="Linux Handbook"
echo "Hello ${name:+person}!"
上記のコマンドは「Helloperson!」を出力します。
$ {variable:-string}
を使用するとさらに多くのユースケースが見つかるでしょう。 $ {variable:+ string}
の利点の一部としての構文 テスト( []
)のような他のツールですでに達成できます )演算子:
次の例では、次の構文を使用します。
${!variable}
これは、機能が少し複雑ですが、機能を確認すると意味があります。
name="Linux Handbook"
variable="name"
echo "Hello ${!variable}!"
「HelloLinuxHandbook」が印刷されます。
その!コード> 変数名の前の文字により、通常の変数名が置き換えられますが、その名前が使用されます。 関連する変数を見つけるためにトリングします。
同様に:
変数
文字列name
の代わりに使用されます 、続いて:名前コード>
Linux Handbook
の値の代わりに使用されます 。
前の方法を使用しましょうが、!
を交換します #
の文字 :
${#variable}
このメソッドを使用すると、変数の長さが出力されますが、変数が文字列であるか配列であるかによって、動作が少し異なります。
文字列でその構文を使用する 文字列内の文字数の代わりに変数が使用されます。
variable="name"
echo "Length is ${#variable}."
それは4をprntします。しかし、その一方で、アレイでそれを使用します 配列内のアイテムの数、つまり配列サイズを出力します。ここでは2です。
variable=("name" "word")
echo "Length is ${#variable}."
最後に、 ^
を使用して、文字列を大文字にして小文字にすることができます および、
それぞれ演算子。
これらは、次のように変数名の最後に指定します。
# Capitalizes
${variable^}
${variable^^}
# Lowercases
${variable,}
${variable,,}
1つと2つのキャラクターを提供することの違いは何ですか?
1つだけ提供する(つまり、 $ {variable ^}
)は、最初の文字のみを変更し、2つ( $ {variable ^^}
)を提供します。 )文字列全体が変更されます。
以下の例は、 Name
を出力します name
の代わりに :
variable="name"
echo "${variable^}"
しかし、これは NAME
を出力します :
variable="name"
echo "${variable^^}"
同様に、変数を小文字で出力することもできます。
以下の例では、 wIDEname
が出力されます :
variable="WIDEname"
echo "${variable,}"
そして、これは widename
を出力します :
variable="WIDEname"
echo "${variable,,}"
これらは、Bash内で変数を使用できる方法のほんの一部です。変数の展開に関するBashのドキュメントには、変数を操作するためのさまざまな方法があります。
上記の例がどのように機能したか、または何かが正しく機能していないかについて質問がありますか?以下のコメントセクションに自由に残してください。