この行をデコードする必要があります。 {$HOSTNAME^^} == {$arrName^^}

この行をデコードする必要があります。 {$HOSTNAME^^} == {$arrName^^}

これは私の組織の誰かが書いたシェルスクリプトの一部です。

while read -r line
do
    #split if needed
    arrName=$(echo $line | cut -d"." -f1)
    if [ {$HOSTNAME^^} == {$arrName^^} ]; then
        echo "Perfect $arrName"
        echo "$1" >> $TEMPFILE
    fi
done < compuetrnames.txt

この行を除いて、スクリプト全体を理解できます。

if [ {$HOSTNAME^^} == {$arrName^^} ]; then

誰かがこの行を理解するのに役立ちますか?

答え1

${variable^^}変数値を大文字に変換するBash 4.xパラメータ拡張。

ドル記号は開かれた中かっこの前に来なければならず、後ろに来なければなりません。

(誤って引用された)echo | cutパイプは、引数拡張を使用して同様に書くか、または...を使用して読み取るときに最初のピリオドですぐに入力を分割${line%%.*}できます。while IFS='.' read line _; do

答え2

Bashの置換は、${parameter^^pattern}ワイルドカードパターンと一致する文字の大文字と小文字を大文字に変更します。$parameterpattern

パターンが存在しない場合は、すべての文字の大文字と小文字が変わります$parameter

Tripleeeが彼の答えで指摘したように、{$...}構文エラーであるか、むしろ値が{$HOSTNAME^^}文字列に拡張された場合です。{hostname^^}$HOSTNAMEhostname

関連情報