計算された変数のbash文字列操作?

計算された変数のbash文字列操作?

私は計算された文字列を操作するための最も簡単な単一のコマンドソリューションを探しています。
たとえば、計算された文字列から最後の2文字を削除するには、md5sumが最後に「-」で返されます。

2つのガイドラインでこれを行うことができます。

$ a=$(echo 'ab'|md5sum); a=$(echo ${a:0:-2})
$ echo $a # (not required instruction)
daa8075d6ac5ff8d0c6d4650adb4ef29

以下のコマンドのいずれかでこれをどのように実行できますか?

$ a=${(echo 'ab'|md5sum):0:-2}
-bash: ${(echo 'ab'|md5sum):0:-2}: bad substitution

ありがとうございます。

ベストアンサー1

POSIXly 以下を使用できます。

a=$(echo 'ab' | md5sum)
a=${a%??}

明らかにする$adaa8075d6ac5ff8d0c6d4650adb4ef29

ただ使用していただければ二次作業は省略しても良いのですが${a%??}、すぐにご使用いただくかお勧めしません。 (コーディングスタイルが進むにつれて、必要な値を生成する2つの部分が分離され、結果としてコードのメンテナンスがより困難になる脆弱な接続が作成されます。)

1つの操作でこれを実行することは可能ですが、少し効率的ではありません。

a=$(echo 'ab' | md5sum | sed 's/..$//')

どちらの場合も、末尾のecho 'ab'改行文字が MD5 チェックサムに含まれます。を使用するecho -n 'ab'か、移植性が良いかもしれませんprintf '%s' 'ab'

おすすめ記事