シェルスクリプトのパッチを作成する場合、diff では何もしなくても$は展開されないので問題はないのですが、diffで作成されたパッチ文をヒアドキュメントでファイルに落とす場合、$が展開されるので、エスケープ処理しない限り、一々コピペするしかないと思い込んでいました。 ですが、ふと"ヒアドキュメント $ そのままで"と検索したところ、cat > test.patch <<'EOF'と EOF をシングルクォート(')で括れば良いとのことでした。 早速試した所、$が確かに展開されず、パッチフィルとして機能しました。 cat > scs_cert_generator.sh.patch <<'EOF' --- scs_cert_generator.sh.orig 2024-07-10 22:03:58.000000000 +0900 +++ scs_cert_generator.sh 2025-05-23 16:26:34.516324152 +0900 @@ -628,8 +628,8 @@ print_msg "Create self-signed Remote Connector certificate." - _GENERATED_CERTIFICATE=$(openssl x509 -req -in <(echo "$_GENERATED_CSR") -sha256 -extfile "$SCS_OPENSSL_CONFIG_FILE" \ - -extensions v3_ca -signkey <(echo "$_PRIVATE_KEY") -out >(cat) -days ${SCS_OPENSSL_DAYS} 2>/dev/null) + _GENERATED_CERTIFICATE=$(openssl x509 -req -sha256 -days ${SCS_OPENSSL_DAYS} -in <(echo "$_GENERATED_CSR") \ + -sign...