쉘 스크립트 튜토리얼을 살펴보고 다음 샘플 프로그램을 찾았습니다.
#!/bin/sh
clear
echo "HELLO WORLD"
#!/bin/sh
처음에 주석의 의미가 무엇인지 말해 줄 수 있습니까 ?
쉘 스크립트 튜토리얼을 살펴보고 다음 샘플 프로그램을 찾았습니다.
#!/bin/sh
clear
echo "HELLO WORLD"
#!/bin/sh
처음에 주석의 의미가 무엇인지 말해 줄 수 있습니까 ?
답변:
shebang 이라고하며 , 스크립트를 실행하는 데 어떤 인터프리터를 사용해야하는지 부모 쉘에 알려줍니다.
예 :
#!/usr/bin/perl <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.
주석으로 구현되어 해당 행에 나오는 모든 것이 지정된 인터프리터와 "관련되지"않습니다. 예를 들어, 모든 스크립팅 언어는로 시작하는 줄 #
이 주석 임을 이해하는 경향이 !/usr/bin/whatever
있으며, 특정 언어의 구문 오류 일 수 있는 부분 을 무시합니다 .
exec()
파일 에서 시스템 호출을 호출합니다.
유닉스에서 프로그램을 실행하려고하면 (실행 가능한 비트가 설정된 프로그램), 운영 체제는 파일의 처음 몇 바이트를 봅니다. 이것들은 프로그램의 형식과 실행 방법을 결정하는데 사용될 수있는 소위 "매직 넘버"를 형성합니다.
#!
매직 번호 0x2321에 해당합니다 (아스키 테이블에서 찾아보십시오). 시스템이 마법 번호를 발견하면 텍스트 번호를 다루고 있음을 알고 다음 스크립트까지 읽습니다 \n
(한계가 있지만 atm을 피합니다). 통역사 (세방 후 첫 번째 인수)를 식별하면 통역사를 호출합니다.
다른 파일에도 마법 번호가 있습니다. 를 통해 비트 맵 (.BMP) 파일을 less
살펴보면 처음 두 문자가 BM
입니다. 이 매직 넘버는 파일이 실제로 비트 맵임을 나타냅니다.
이 스크립트가있는 파일이 실행 가능한 경우 hash-bang ( #!
)은 운영 체제에 스크립트를 실행하는 데 사용할 인터프리터를 알려줍니다. 이 경우 /bin/sh
예를 들어입니다.
자세한 내용 은 Wikipedia 기사 가 있습니다.
#!/bin/sh
또는 #!/bin/bash
당신이 첫 번째 줄에 사용하지 않는 경우 다음 시스템이 다른 명령으로 해당 스크립트의 모든 명령을 처리하기 때문에 스크립트의 첫 번째 줄 수있다. 첫 번째 #!/bin/sh
줄이면 모든 명령을 하나의 스크립트로 간주 ps
하고 파일 내부의 명령 이 아니라이 파일이 명령 으로 실행되고 있음을 나타냅니다.
./echo.sh
ps -ef |grep echo
trainee 3036 2717 0 16:24 pts/0 00:00:00 /bin/sh ./echo.sh
root 3042 2912 0 16:24 pts/1 00:00:00 grep --color=auto echo
ps
코드 발췌를 #!/bin/sh
형식화해야합니다.