한 스크립트의 내용을 다른 스크립트에 복사

한 스크립트의 내용을 다른 스크립트에 복사

저는 UNIX를 처음 접했고 현재 Bash를 배우려고 노력하고 있습니다.

xyz.sh, abc.sh& 3개의 스크립트가 있습니다 wow.sh. 콘텐츠를 사용되는 xyz.sh대로 복사하고 싶습니다 . 즉, 한 스크립트를 다른 스크립트로 복사하는 스크립트입니다.wow.shabc.sh

xyz.sh:

echo "\n code $code \n"

abc.sh:

while read line
do
   echo $line >> wow.sh
done < xyz.sh

abc.sh가 실행되면 wow.sh의 내용은 다음과 같습니다.

echo "n code $code n"

\n이 n으로 변환됩니다. 왜 이런 일이 발생하는지 설명할 수 있는 사람이 있고 \n을 \n으로 유지하는 해결 방법이 있습니까?

또한, 이전에 비슷한 질문을 하신 분이 계시다면 링크를 제공해 주세요. 찾을 수 없습니다.

답변1

xyz.sh에 (내용)을 추가하려는 경우 wow.sh가장 쉬운 방법은 다음과 같습니다.

cat xyz.sh >> wow.sh

동일한 결과를 얻기 위해 이를 사용하는 것은 read보기만큼 간단하지 않습니다. \셸의 특수 문자입니다. 이 옵션을 사용해야 합니다 -r. 즉, 다음을 의미합니다.

    -r      do not allow backslashes to escape any characters

cat이는 기본적으로 수행됩니다. 그리고 read어쨌든 이 작업을 수행하는 데 적합한 도구는 아닙니다. 이 두 명령의 구문을 비교해 보면 직관적으로 동일한 결과를 알 수 있습니다.

관심을 가질 만한 또 다른 명령이 있습니다. source라고도 하는 내장 명령 입니다 .. 스크립트에서 파일을 가져오면 소스 파일의 내용이 스크립트에 있는 것처럼 작동합니다. 따라서 다음 줄을 입력하세요 wow.sh.

. xyz.sh

또는

source xyz.sh

to의 내용은 복사되지 않고 xyz.sh실행 시 wow.sh스크립트에 있는 것처럼 실행됩니다. 물론 이는 스크립트 실행 중에 파일이 존재한다고 가정합니다.xyz.shwow.shxyz.shwow.sh

관련 정보