write ahead log

ロールフォワード用

シェルスクリプトで外部コマンドを組み立てて実行結果を得る

何度も調べたり考えたりしている気がする…

他にももっといい方法があるのかもしれない.

問題

シェルスクリプト内で引数をsha256化した結果を使いまわしたかった.

コマンドラインで素直に書くとこんな感じ.

echo -n 'pass'| shasum -a 256 | tr -d ' *-'

これをスクリプト内で実行して, 結果を変数に設定したい.

解決したスクリプト

こんな感じになった.

password='pass'
hashingCommand="echo -n "$password" | shasum -a 256 | tr -d ' *-'"
sha256Password=$(eval $hashingCommand)

echo $sha256Password  # デバッグ表示
  1. まずpasswordという変数に文字列を設定
  2. 次に変数展開してコマンドを構成
  3. 2を展開してevalで実行
  4. $()の外部コマンド実行で結果をsha256Passwordへ設定

感想

これでいいの?