問題のコンテキストは、一重引用符を含むパスフレーズを openssl 構成ファイルの input_password パラメーターに渡そうとしていることです。
openssl 構成ファイルのマニュアルから取得:
任意の種類の引用符または \ 文字を使用して、特定の文字をエスケープすることができます。行の最後の文字を \ にすることで、値の文字列を複数の行に広げることができます。さらに、シーケンス \n、\r、\b、および \t が認識されます
一重引用符はエスケープできると想定しました。問題は、sed でエスケープされた単一引用符を生成するのが難しいことです。
これは、次の式をスクリプトまたはコマンド ラインから実行した場合、同じ結果が得られないことを意味します。次のコマンドを実行します。
cut -d: -f2 "$EMPLOYEE_CREDENTIALS_FILE"| sed -e "s|'|\\\'|g"
「$EMPLOYEE_CREDENTIALS_FILE」は次のような形式のファイルです
username:password
このコマンドをbashで直接実行すると、openssl.confが許容すると想定した出力が生成されます。
tentacle caravan sovereignty appraisal sass\'s
そして、スクリプトで実行すると、通常のエスケープされていないパスフレーズが生成されます。
tentacle caravan sovereignty appraisal sass's
私は何が間違っているのか知りたいです。