古いシェルスクリプトを確認しています。私が理解できない2つのことがあります。
rm /data/log || true
value=$(cat /datafile)
if [ ${value: -1} == 0 ]
then echo 'do'
else echo 'dont'
fi
value: -1
- これは実際に何をしているのですか?rm /data/log || true
-||true
これは何してるの?
ベストアンサー1
${value: -1}
次に展開最後の文字可変コンテンツ。
${value:-1}
はいその他から${value: -1}
!
引用するシェルパラメータ拡張マニュアルから:
${value:-1}
変数の内容に展開されるvalue
か、変数が設定されていないか空の場合、文字列 "1" に展開されます。${value: -1}
${var:offset:length}
変数の内容の部分文字列を抽出する形式の省略形です。オフセットとは、-1
「文字列の終わりに1文字」を意味します。この:length
部分が欠落しており、offset
文字列の末尾から部分文字列を取得します。このマニュアルには次のように記載されています。
':-'拡張との混同を避けるために、負のオフセットはコロンで少なくとも1つのスペースで区切る必要があります。