' P '

whatever I will forget

Shell 変数にディレクトリ名をつっこみたいとき

Shellは色々構文がややこしい...

やりたいこと

$filenameという変数に、ディレクトリ名を指定した状態で、現在の時刻を含むようなファイル名をつっこみたい

やりかた

$dirnameという変数に/home/tmpみたいな値が入っているとする.
最初に、

$filename = "$dirname/..."

みたいなことをしてもちゃんとディレクトリ名は認識されません。
なぜなら""で囲っているため、そのまんま$dirnameになっちゃいます.
なので、下記のようにします。

$filename = "${dirname}/..."

さらにtmp/workの下に現在時刻を含むファイル名を作りたいとします.
date +'%Y%m%d%H%M'とすることで、202007011425みたいな値が取得できます.

例えばxmlファイルを作成したい場合、
`date +'%Y%m%d%H%M'`.xmlとバッククオーテションで囲むことによって標準出力を文字列として認識させます。

結論

$filename = "${dirname}/work/`date +'%Y%m%d%H%M'`.xml"

とすれば、$filenameに、/home/tmp/work/202007011425.xmlとセットすることができます.