高度なシェル スクリプト: ${} は変数の値を抽出します

自分のブログ Web サイトの記事
バッシュ

高度なシェル スクリプト: ${} を使用して変数を抽出する

シェル スクリプト プログラミングでは、通常、$ シンボルは変数を抽出するために使用されます。つまり、 $VARIABLE は変数を抽出するために使用されます VARIABLE 値。 ${} は変数を参照するための別の構文です。

$ と比較すると、${] はより強力であり、変数の値の取得や文字列置換の実行など、一連の追加関数を提供します。コマンドを使用し、デフォルト値などを提供します。この記事では${}の使い方や例文を詳しく紹介します。

1. 変数の値を取得する

${var} は、変数varの値を取得するために使用されます。これは、通常の変数、配列変数、環境変数に当てはまります。以下に例を示します。

name="John"
echo "欢迎,${name}!"

上記の例では、${name} は変数 name の値に置き換えられ、出力は「ようこそ、ジョン!」となります。 「。」

2. 大文字と小文字の変換

文字列の大文字と小文字を変更するには、変数の後に^, を使用します。

  • ${var^}文字列の最初の文字を大文字にします
  • ${var^^}文字列をすべて大文字にします
  • ${var,}文字列の最初の文字を小文字にします
  • ${var,,}文字列をすべて小文字にします
var="hello world"

echo "Original string: $var"                  # hello world
echo "Capitalizing the first letter: ${var^}" # Hello world
echo "Converting to uppercase: ${var^^}"      # HELLO WORLD

var="HELLO WORLD"
echo "Lowercasing the first letter: ${var,}" # hELLO WORLD
echo "Converting to lowercase: ${var,,}"     # hello world

3. 定義されていない場合はデフォルト値を使用します

${var:-default} は、変数の値を取得するために使用されますvarvar が未定義または空の場合、デフォルト値が使用されます。default 。以下に例を示します。

echo "${debug_level:-"error"}" # error

debug_level="info"
echo "${debug_level:-"error"}" # info

この構文は、oh-my-zshpowerlevel 10k テーマのダウンロード コマンドでも使用されます。

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

ユーザーがインストール時に別のインストール ディレクトリを指定した場合oh-my-zsh.zshrc ファイルはZSH_CUSTOM変数を使用します。この設置場所を記録します。

4. 定義されていない場合のデフォルト値を設定する

${var:=default} は、変数varの値を取得するために使用されます。var が未定義または空の場合、デフォルト値に設定されますdefault をクリックし、その値を使用します。以下に例を示します。

echo "${debug_level:="error"}" # error
echo "${debug_level}" # error

count=5
echo "当前计数:${count:=0}"      # 5
echo "变量已存在则不会重新设置:${count}" # 5

上記の例では、変数debug_levelは未定義または空です。${debug_level:=0} はデフォルト値に設定しますerrorcount の値は定義されているため、 ${count:=5} は現在のカウントを 0 として直接出力し、デフォルト値を変更しません

5. 定義されている場合はデフォルト値を使用します

${var:+default} は、変数 var の値を取得するために使用されます。var が定義されている場合、デフォルト値 default は次のとおりです。使用済み。

echo "${debug_flag:+"You will not see this debug info"}" # (空)

debug_flag="yes"
echo "${debug_flag:+"You will see this debug info"}" # You will see this debug info

6. 弦の交換

${var/pattern/replacement} は、変数var 内の pattern に一致する最初の部分文字列を replacement に置き換えるのに使用されます。

  • ${var//pattern/replacement}文字列内の一致する部分文字列をすべて置き換えます
  • ${var/%pattern/replacement}文字列内の最後に一致した部分文字列のみが置換されます
  • ${var/#pattern/replacement}文字列内で最初に一致した部分文字列のみが置換されます
  • ${var/pattern/}部分文字列を削除する、つまり空白に置き換えることと同じです。

以下に例を示します。

sentence="I love apples, apples are delicious."
echo "替换前的句子:${sentence}"
echo "替换后的句子:${sentence//apples/oranges}"

上記の例では、${sentence//apples/oranges} によって文中のすべての「リンゴ」が「オレンジ」に置き換えられます。

7. 部分文字列の抽出

${string:position:length} は、 から始まる string 文字を抽出する、つまり部分文字列を取得するために使用されます。また、負の数で始まる (文字列の末尾から開始することを意味します) もサポートします。 positionlengthpositon

以下に例を示します。

name="JackWang"
echo "First Name: ${name:0:4}"
echo "Last Name: ${nane:(-4):4}"

負の数値は括弧で囲む必要があることに注意してください。

8. 可変長

${#var} は、変数varの長さ(文字数)を取得するために使用されます。以下に例を示します。

word="Hello"
echo "单词长度为:${
     
     #word}"

上記の例では、${#word} は変数 word の長さを出力します。つまり、単語「Hello」の長さは 5 です。

9. まとめ

${}構造はシェル スクリプトに柔軟性と機能を提供します。これにより、変数の参照、文字列の置換の実行、デフォルト値の提供、およびさまざまなプログラミングのニーズを満たすその他の操作を簡単に行うことができます。

この記事が、${} の使用法を理解し、シェル スクリプト プログラミングで変数や文字列の操作をより柔軟に処理できるようになることを願っています。

おすすめ

転載: blog.csdn.net/qq_45488242/article/details/134735785