![先月の日付(年と月のみ - 2016-07)を変数に割り当てる方法は? [コピー]](https://linux33.com/image/91788/%E5%85%88%E6%9C%88%E3%81%AE%E6%97%A5%E4%BB%98%EF%BC%88%E5%B9%B4%E3%81%A8%E6%9C%88%E3%81%AE%E3%81%BF%20-%202016-07%EF%BC%89%E3%82%92%E5%A4%89%E6%95%B0%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
Bashスクリプトで日付を変数として使用する際に問題があります。私はbashや他の言語で何も書いた経験がないことを認めましたが、この問題を解決する任務が私に与えられました。ここで私が探しているものに似た他の投稿をいくつか見ましたが、まだ把握していません。
数百のログファイルを1つのディレクトリから、前の月の年と月(数字)の名前を付けたアーカイブディレクトリに移動する必要があります2016-07
。たとえば、スクリプトが先月のディレクトリが存在するかどうかを確認するために、アーカイブディレクトリを調べたいと思います。そうでない場合は、それを作成してログをその中に移動します。 RHEL 5.11を使用しています。
コマンドプロンプトでは、これは私に必要なものを提供します:
date +%Y-%m –d “last month”
返品:2016-07
変数として機能させることはできません。私は以下を試しました。
last_month=date +%Y-%m -d "last month"
last month=(date +%Y-%m -d "last month")
答え1
魔法の言葉は「命令置換」です。 ~から男乱交:
コマンド置換を使用すると、コマンド出力をコマンド名に置き換えることができます。
$ d=$(date +%Y-%m -d "last month")
$ echo $d
2016-07
答え2
次のコマンドを試してください。
$ last_month=`date +%Y-%m -d "last month"`
$ echo $last_month