Bashでスペースを含む文字列を全体的に処理するには? [コピー]

Bashでスペースを含む文字列を全体的に処理するには? [コピー]

error_occurr 時間でラベル付けされた空のファイルを生成するエラーハンドラを作成したいと思います。

重要なアイデアは、dateコマンドの結果をパラメータとして使用することです。

私はそうしました:

time_stamp=$(date)
touch $time_stamp

2014ただし、これにより、、Wedなどの一連の空のファイルが生成されます11:15:20

ここでtime_stampを文字列全体に変換するには?

答え1

cuonglmの答えは、一般的に空白のファイルを作成する問題を解決しますが、問題はdate

ファイル名の一部として日付または日付/時刻文字列を使用するには、常にこの--rfc-3339オプション(最新のGNUシステムの場合)または適切なフォーマット文字列を使用する必要があります。これにより、論理的な方法でソートできるファイル名が提供されます。このオプションは、必要なファイル名の精度に応じて--rfc-33391つの引数を使用または使用します。secondsnsdate

time_stamp="$(date --rfc-3339=seconds)"
touch "$time_stamp"

スペースなしで特定の文字列を取得することも、必要な情報のみを取得することもできますdate +FORMATman date詳細については)。

time_stamp="$(date +%Y%m%d-%H%M)"
touch "$time_stamp"

20141029-0944スペースなしで同様の名前のファイルを提供し、引用が不要であるという錯覚を引き起こします。でも君はまだ電話するからこうするんだ分割+グローバル$IFSデフォルト値が変更されたコンテキストで使用される場合、この演算子は実際に分割できます。

答え2

変数を二重引用符で囲む必要があります。

time_stamp="$(date)"
touch "$time_stamp"

この場合、二重引用符は"$(date)"必須ではありませんが、そうすることをお勧めします。あなたは読むことができますこれより理解するために。

関連情報