ある変数のMD5を別の変数に保存しようとしています。バックティックと最新の()
表記の間で、コマンドを介して実行される変数の値を他の変数に割り当てる方法はわかりません。サンプルコード:
#!/bin/bash
backup_dir=$(date +%Y-%m-%d_%H-%M-%S)
hashed=$( ${backup_dir} | md5)
ここでhashed
変数は機能せず、リテラル文字列を取得してハッシュbackup_dir
します。したがって、ハッシュ値は常に同じです。どんなアイデアがありますか?
ありがとうございます!
ベストアンサー1
md5
変数の値を読み、対応するbackup_dir
MD5ハッシュ合計を返そうとします。
コマンドパイプライン
${backup_dir} | md5
$backup_dir
コマンドで実行しようとし、出力をmd5
。d41d8cd98f00b204e9800998ecf8427e
$hashed
代わりに、次のようなものを使用する必要があります。
printf '%s' "$backup_dir" | md5
md5
標準入力ストリームに値を提供します。
echo "$backup_dir" | md5
またはを使用することもできますが、これmd5 <<<"$backup_dir"
は値の末尾に改行文字が追加され、ハッシュ値が$backup_dir
変更されることに注意してください。
md5
このmd5
ユーティリティがBSDやBSDのようなシステム(macOSなど)で一般的に使用されている場合は、次のものを使用する必要があります。
md5 -q -s "$backup_dir"
この-s
オプションは、文字列を引数として使用してその文字列のハッシュのみを印刷し、他の内容は印刷しません-q
。md5
要約:
#!/bin/bash
backup_dir=$(date +%Y-%m-%d_%H-%M-%S)
hashed=$(md5 -q -s "$backup_dir")