0

以下は、タイムスタンプを 16 ビットの 16 進整数として返す Makefile ワンライナーです。

DAY       := $(shell date +%u)
HOUR      := $(shell date +%H)
MINUTE    := $(shell date +%M)
TIMESTAMP := $(shell perl -e 'printf "%04X", ($(USER2)<<14)|($(DAY)<<11)|($(HOUR)<<6)|$(MINUTE)')

ほとんどの場合、これは機能します。ただし、今すぐ実行するとdateの時間が返さ09れ、スクリプトは文句を言います:

Illegal octal digit '9' at -e line 1, at end of line

これを修正する方法についてのアイデアはありますか? ありがとう。

4

1 に答える 1

0

数値リテラルを引用符で囲んで文字列に変換します。これは、ビットシフト演算子と一緒に正しいことを行います。

"$(USER2)"<<14
于 2013-07-16T09:05:57.640 に答える