Ubuntuで次のコマンドラインを実行した場合:
_var="$(date +"%x %r %Z")"
echo var
_
目的の出力を得ることができます。しかし、私が走ったら
_date +%x %r %Z
_
エラーが表示されます:
日付:余分なオペランド '%r'
詳細については、「date --help」を試してください。
var="$(date +"%x %r %Z")"
に対応する日付コマンドは何ですか?ありがとう。
まったく同じコマンドをコピーしませんでした。 date +"%x %r %Z"
を括弧内に記述しました。これは外でうまく機能します。それ以外の場合、date
には、1つ(+%x
)ではなく、3つの引数(%r
、%Z
および+%x %r %Z
)があります。
man bash
から:
$(command)形式を使用する場合、括弧で囲まれたすべての文字がコマンドを構成します。特別に扱われるものはありません。
コマンド置換はネストできます。
コンテンツを評価する前に括弧が一致するため、コマンドは$(date +%x
、%r
、%Z)
として分割されません。
注意 :$
のecho $var
を忘れました。
それでは、var = "$(date +"%x%r%Z ")"に対応するdateコマンドは何ですか?
別の回答で既に述べたように、正しいオプションを引用するのを逃した場合は、少なくとも次のようにする必要があります。
date +"%x %r %Z"
空白を使用してさまざまな情報を区別するため、これが必要です。日付の manページ は、-
または_
の使用を提案します。 、これを使用すると、通常の端末で引用符をすべて省略したり、空白をエスケープしたりできます。
例:
区切り文字として「-」を使用
date +%x-%r%Z
次の出力が得られます。
21.09.2018-11:30:15 CEST
区切り文字として「_」を使用
date +%x_%r%Z
次の出力が得られます。
21.09.2018_11:30:15 CEST
区切り文字としてエスケープされた空白を使用する
date +%x\ %r%Z
次の出力が得られます。
21.09.2018 11:30:15 CEST
仕切りをまったく使用しない
date +%x%r%Z
次の出力が得られます。
21.09.201811:30:15 CEST
特別なユースケースの残り。日付をcrontab
コマンドに組み込む場合、%
記号もエスケープする必要があります。したがって、分割されていない情報として、コマンドは次のようになります(前述の規則はまだエスケープに適用されます)。
date +\%x\%r\%Z