自分のブログ 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}
は、変数の値を取得するために使用されますvar
。var
が未定義または空の場合、デフォルト値が使用されます。default
。以下に例を示します。
echo "${debug_level:-"error"}" # error
debug_level="info"
echo "${debug_level:-"error"}" # info
この構文は、oh-my-zsh
のpowerlevel 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}
はデフォルト値に設定しますerror
。 count
の値は定義されているため、 ${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
文字を抽出する、つまり部分文字列を取得するために使用されます。また、負の数で始まる (文字列の末尾から開始することを意味します) もサポートします。 position
length
positon
以下に例を示します。
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. まとめ
${}
構造はシェル スクリプトに柔軟性と機能を提供します。これにより、変数の参照、文字列の置換の実行、デフォルト値の提供、およびさまざまなプログラミングのニーズを満たすその他の操作を簡単に行うことができます。
この記事が、${}
の使用法を理解し、シェル スクリプト プログラミングで変数や文字列の操作をより柔軟に処理できるようになることを願っています。