Bash에서 구분된 문서를 통해 패치를 실행하는 방법은 무엇입니까?

Bash에서 구분된 문서를 통해 패치를 실행하는 방법은 무엇입니까?

Bash에서 다음과 같은 파일을 패치하려고 합니다.

cat << ''EOF | patch --dry-run
> --- urancid     2017-12-06 09:56:33.000000000 -0600  patch --dry-run
> +++ /tmp/urancid        2017-12-06 15:06:57.000000000 -0600
> @@ -393,7 +393,7 @@
>          last if (/^$prompt/);
>          next if (/-ac\.\s*/);
>          next if (/-fs\.\s*/);
> -       next if (/set date\s*/)
> +       next if (/set date\s*/);
>          next if (/^(\s*|\s*$cmd\s*)$/);
>          if ( ! /^$prompt/) {
>                  if ( ! $skipprocess ) {
> EOF

하지만 내가 얻는 건

patching file urancid
Hunk #1 FAILED at 393.
1 out of 1 hunk FAILED -- saving rejects to file urancid.rej

가능할 것 같습니다. 제가 붙여넣은 패치 파일을 찾으면 작동할 것입니다.

여러 파일을 포함하지 않고도 패치 스크립트를 만들 수 있도록 이 작업을 수행하고 싶습니다.

지금까지 나는 "패치"가 무엇과 관련되어 있는지 잘 알지 못합니다. 공백 문제가 있는 것 같습니다.

답변1

패치를 적용할 수 있도록 예제의 공백을 수정하면 개념이 수용 가능하다는 것을 알 수 있습니다(비록 cat그렇게 할 수 있기 때문에 필수는 아니지만 patch --dry-run <<'EOF').

반면 공백 정렬이 잘못된 패치가 있는 경우 이 --ignore-whitespace매개변수를 사용하는 것이 좋습니다. (패치 매뉴얼 페이지에서 이를 찾을 수 있습니다. man patch)

patch --dry-run --ignore-whitespace << 'EOF'
...
...
EOF

관련 정보