変数拡張でコロンを使用する

変数拡張でコロンを使用する

古いシェルスクリプトを確認しています。私が理解できない2つのことがあります。

rm /data/log || true

value=$(cat /datafile)
if [ ${value: -1} ==  0 ] 
 then echo 'do'
else echo 'dont'
 fi
  1. value: -1- これは実際に何をしているのですか?
  2. rm /data/log || true-||trueこれは何してるの?

ベストアンサー1

${value: -1}次に展開最後の文字可変コンテンツ。

${value:-1}はいその他から${value: -1}

引用するシェルパラメータ拡張マニュアルから:

  1. ${value:-1}変数の内容に展開されるvalueか、変数が設定されていないか空の場合、文字列 "1" に展開されます。

  2. ${value: -1}${var:offset:length}変数の内容の部分文字列を抽出する形式の省略形です。オフセットとは、-1「文字列の終わりに1文字」を意味します。この:length部分が欠落しており、offset文字列の末尾から部分文字列を取得します。

    このマニュアルには次のように記載されています。

    ':-'拡張との混同を避けるために、負のオフセットはコロンで少なくとも1つのスペースで区切る必要があります。

おすすめ記事