ホスト名シェルスクリプトの問合せ

ホスト名シェルスクリプトの問合せ

以下のスクリプトを理解できません。

GUBUN=${ホスト名:${#HOSTNAME}-1:1}

私はこの呼び出しホスト名だけを知っていますが、完全には理解できません。

私が知っているもの ${#HOSTNAME}-1: 呼び出しホスト名の最後の文字

最後のホスト名文字が「x」の場合、スクリプトは$ {HOSTNAME:x:1}です。理解できません...

答え1

$ {HOSTNAME}はシステムのホスト名を含む変数です。

${#HOSTNAME} はホスト名のパラメーター長 (文字) です。

そのため、$HOSTNAME 値を使用して終了 (オフセット) から 1 文字を開始し、最初の 1 文字を取得します。

kevlinux@ubuntu:~$ echo $HOSTNAME
ubuntu 
kevlinux@ubuntu:~$ echo ${HOSTNAME: ${#HOSTNAME}-1: 1}
u

ソース:man bashとパラメータ拡張の検索。

答え2

最近のシェル(bash)では、次のものも使用できます。

echo ${HOSTNAME: -1}

良いman bash

${パラメータ:オフセット:長さ}部分文字列拡張。

。 。 。

オフセットがゼロ未満の数値として評価される場合、その値はパラメータ値の末尾の文字オフセットとして使用されます。

長さを省略すると、値の終わりまで拡張されます。

(「デフォルト」として解釈されないように空白があることを確認してください)

関連情報