2017-10-25 11 views
1
Year=`date '+%Y'` 
RTRN1=$? 

これは、ログ内の現在の日付を返しますから、しかし、私は2016年バッシュ-1年の日付

感謝任意の助けをしたいので、代わりに、これは2017年を返す、前年を返すようにしたいです!おかげでGNU dateユーティリティの

答えて

1

:日付を調整する-d(​​)オプションを使用します。私たちはbashを持っていたよう

Year=$(date +%Y -d'1 year ago') 

echo $Year 
2016 
+0

もちろん、GNUの 'date'を想定しています。 –

+0

@ IgnacioVazquez-Abrams、あなたはそれを持っています – RomanPerekhrest

+0

これはまだ驚くほど2017年を返しますが、何の誤りもありませんが、私は2016年を返すためにそれを必要とします。 – Matt

1

は、それはあなたが常にキャプチャすることができますlet

let YEAR=`date +%Y`-1 
echo $YEAR 
+0

これは動作しません、それでも2017を返します。私は確信していません理由 – Matt

1

を使用することが可能です年はdate +'%Y'です。 1をPOSIX算術演算子で減算することができます。あなたはまた、例えば、POSIXに準拠しexpr数学演算子を使用することができ

$ echo $(($(date +%Y) - 1)) 
2016 

$ expr $(date +%Y) - 1 
2016 

注:exprあなたは数学演算子と値の間space残さなければならない)に沿って、コメントや他の回答で指定されているように動作します'1 year ago'

GNU日付演算子-dを他の回答に指定されているlet dt=$(date +%Y)-1; echo $dtletで許可されるスペースはありません)。私はGNU dateを持っていなかった場合は、すべての選択肢の

は、私がdateコマンド置換マイナス1とPOSIX算術演算子$((...))を選ぶと思います。

+0

これを私の現在のコードにどのように追加しますか?現在、これを試してみると、パラメータ値は0〜72文字の長さでなければならないと言われています。歓声 – Matt

+1

'Year = $(date '+%Y');年= $((年 - 1)); "Year:$ Year' echo(バッククォート' \ '.. \' 'を取り除き、コマンド置換に' $(...) 'を使う - 操作を変更しませんが、読みやすくなります。 'Year = $(($ + date +%Y) - 1)') '' Year'に1つのステートメントで '2016 ' –

関連する問題