기본적으로 vi 편집기와 echo 명령을 사용하여 SH 파일 내에 또 다른 SH 파일을 만듭니다. 이것은 원본 SH 파일의 내용입니다 -
#!/bin/bash
echo "#!/bin/bash" > f1.sh
echo "echo "hello"" > f1.sh
f1은 echo 명령을 사용하여 쓰고 싶은 SH 파일인데 원본 파일을 실행하면 f1 파일은 #!bin/bash에 쓰지 않고 echo "hello" 명령만 씁니다. echo HASHBANG 명령을 echo \#\!/bin/bash로 작성해 보았으나 제대로 작동하지 않았습니다. 그렇다면 vi 편집기에서 echo 명령을 사용하여 #!bin/bash를 다른 SH 파일에 쓰는 방법은 무엇입니까?
답변1
대신 이 문서를 사용하세요.
#!/bin/bash
cat >f1.sh <<'SCRIPT_END'
#!/bin/bash
echo "hello"
SCRIPT_END
이는 쉘이 아무것도 방해하지 않고 그대로 스크립트를 전달하고 cat
파일로 리디렉션합니다 f1.sh
.
코드에 많은 문제가 있지만 리디렉션과 관련된 문제는 리디렉션을 f1.sh
사용할 때마다 >
파일을 자르거나 비운다는 것입니다. 이는 echo
코드의 두 번째 코드가 첫 번째 코드가 파일에 쓴 데이터를 덮어쓴다는 의미입니다 echo
.
또한 두 번째 줄의 인용문은 echo
의미가 없습니다.
Vi 편집기는 이와 관련이 없습니다.