ディレクトリからinotify CLOSE_WRITEイベントをキャプチャし、CSV情報を履歴ファイルに書きたいと思います。
私の試み:
#!/bin/bash
dir=/home/stephen/temp
host=$(hostname)
inotifywait -e close_write -m --timefmt '%Y-%m-%d,%H:%M' --format '%T,$host,%e,%w,%f' $dir | while read event;
do
echo $event
done
これは生産します
2022-06-14,16:58, `hostname`, CLOSE_WRITE,CLOSE, /home/stephen/temp/, testfile.txt
私はそれを試してみましたが、$host
効果$(hostname)
は同じです。イベントの型定義は、外部で定義された変数を受け入れません。
Pythonスクリプトですべてをラップすることもできますが、シェルネイティブソリューションを見つけることをお勧めします。
ベストアンサー1
引用時に拡張に適用される規則を覚えている限り、変数に格納されている文字列(複数行を含む)を挿入するか、コマンド置換を使用できます。一重引用符内の内容は文字通り印刷されます。一重引用符を分離し、二重引用符を使用して拡張する変数またはコマンドの置換を示します。バラより
シェルの「...」、「...」、$'...'、および$"..."引用符の違いは何ですか?
たとえば、特定のケースでは同様の形式を使用します。
--format '%T, $host: '"${host}"',%e,%w,%f'
または
--format '%T, $host: '"$(hostnamectl hostname)"',%e,%w,%f'
印刷
2022-12-20,06:21, $host: tuxedo,CLOSE_WRITE,CLOSE,./,test
したがって、最初の項目は$host
文字通り印刷され、二重引用符の間の部分はホスト名に展開されます。