以下のスクリプトを理解できません。
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
:
${パラメータ:オフセット:長さ}部分文字列拡張。
。 。 。
オフセットがゼロ未満の数値として評価される場合、その値はパラメータ値の末尾の文字オフセットとして使用されます。
長さを省略すると、値の終わりまで拡張されます。
(「デフォルト」として解釈されないように空白があることを確認してください)