shasum
到達する方法がありますか?ただハッシュ値を印刷しますか?
出力を別のプログラムにパイプすると、これが可能であることがわかります。
shasum something | cut -d' ' -f1
shasum
結果を他の場所にパイピングせずに単に使用してこれを達成する方法はありますか?
ベストアンサー1
カント。 Perl shasum 6.02およびGNU coreutils 9.1の対応するプログラムでは、ファイル名(標準入力で利用可能)なしでハッシュの-
16進表現を印刷する方法はありません。
しかし、これが問題にならないようにしてください!シェルは複数のプログラムを組み合わせるように設計されています。パイプはエンクロージャの必須機能です。。エラーを許可しないように注意してください。これはshパイプラインの設計上の欠陥です。
通常のshでは、シェルパイプよりもコマンド置換を介して「隠された」パイプを使用する方が簡単です。
out=$(shasum <something) && echo "${out%%[!0-9A-Za-z]*}"
説明:コマンドの最初の部分(前&&
)out
はの出力を設定しますshasum
。単純な割り当てなので、単一のコマンド交換状態なので、失敗すると失敗しますshasum
。オペレーターは、&&
左が失敗した場合にコマンド全体が失敗することを保証します。左が成功すると、右側に出力の先行英数字が印刷されます。 (… && echo "${out%% *}"
また、将来のバージョンでタブを使用している場合は、上記のバージョンがもう少し強力になるでしょう。)