非POSIXコマンドの書き換え案 #39
Replies: 4 comments 6 replies
-
現状、実行可能ファイルを探すのは 類似の機能として Bashでコマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強→command -vも 変更前 if [ -e "$(which md5sum)" ]; then 変更後(案) if type md5sum >/dev/null 2>&1; then |
Beta Was this translation helpful? Give feedback.
-
md5を計算するのに、現状は openssl dgst -md5 ${FILE_NAME} | awk '{ print $2}' echo "$STRING" | openssl dgst -md5 | awk '{ print $2}' また、一応
QiiCipherは性能にシビアな使われ方はしないとおもうので |
Beta Was this translation helpful? Give feedback.
-
POSIX 準拠化は、ほぼほぼ決定ですね! 😄 ってか決定で! POSIX 対応は v2 になるのを待たなくてもリファクタの範囲でできると思うので、少しずつでも対応していきたいです。
リストにないもので言えば、
別途インストールが必要なコマンドの「インストール済みチェック」は必須としたいので |
Beta Was this translation helpful? Give feedback.
-
コマンドではありませんが、 Lines 22 to 28 in dde7df6 openssl は必須ということで、関数化するなら以下みたいな感じ? getRandStr() {
openssl rand -base64 32
} getRandStr のテスト#shellcheck shell=sh
getRandStr() {
val_rand=$(openssl rand -base64 32 2>&1) || {
echo >&2 'OpenSSL によるランダム値の取得に失敗しました。'
echo >&2 "エラー内容: ${val_rand}"
return 1
}
echo "$val_rand"
}
Describe 'getRandStr'
It 'should return Base64 encoded random hash value'
When call getRandStr
The stdout should end with '='
The stdout should not include "\n"
The status should be success
End
End
Describe 'getRandStr that openssl fails'
Mock openssl
echo >&2 'foobar'
return 1
End
It 'should return the error with status 1'
When call getRandStr
The stdout should be blank
The stderr should include 'foobar'
The stderr should include 'OpenSSL によるランダム値の取得に失敗しました'
The status should be failure # status is 1-255
End
End
|
Beta Was this translation helpful? Give feedback.
-
issue #29 にあるように、将来的には POSIX 準拠のシェルで実装したいという思いがありますが、同じようにできるだけ POSIX 準拠のコマンドだけで実現したいとも思います。
そのため、依存している非 POSIX コマンドの洗い出しと、書き換え案を残しておきたいと思います。
POSIX コマンドの一覧 は、このページでよいのかな
また、使用しなくていけない非 POSIX 準拠コマンドは以下の3つ?
openssl
ssh-keygen
curl
(あるいはwget
、fetch
)Beta Was this translation helpful? Give feedback.
All reactions