bash script 예제

-e에 대한 설명은 강력한 셸 스크립트 작성을 참조하십시오. 첫 번째 예제는 입력 파일의 줄 수를 계산하기만 하면 됩니다. while 루프를 사용하여 파일의 모든 줄을 반복하여 루프 헤더에서 읽기 작업을 수행합니다. 처리할 줄이 있지만 이 경우 루프 본문이 실행되어 카운터를 (카운터++)로 늘리기만 하면 됩니다. 또한 현재 줄은 변수 줄의 값을 에코하고 변수의 표준 출력을 $file 변수의 표준 출력을 리디렉션하여 변수 파일에 의해 이름이 지정된 파일에 기록됩니다. 현재 줄이 파일로 표시됩니다. 후자는 물론 라인 카운트에 필요하지 않지만 작업의 성공을 확인하는 방법을 보여줍니다 : 특수 변수 $? 이전 명령(리디렉션된 에코)의 반환 코드가 포함됩니다. 유닉스 규칙에 의해 성공은 0의 반환 코드로 표시되며, 다른 모든 값은 응용 프로그램 특정 의미가있는 오류 코드입니다. 대부분의 언어와 마찬가지로 bash는 조건부, 반복 및 서브루틴에 대한 제어 구조를 지원합니다. 이전 두 예제는 STDOUT 과 STDERR을 모두 파일로 리디렉션했습니다. 동일한 효과를 달성하는 또 다른 방법은 다음과 같습니다 배쉬에서 많은 조건이 특수 명령 테스트에서 빌드됩니다.

일반적으로 쉘은 대화형입니다. 즉, 셸 (키보드를 통해) 명령을 수락 하 고 그들을 실행 합니다. 그러나 명령을 하나씩 사용하는 경우 (명령 의 시퀀스)는 이 명령 시퀀스를 텍스트 파일에 저장하고 명령을 입력하는 대신 이 텍스트 파일을 실행하도록 셸에 지시할 수 있습니다. 이것은 쉘 스크립트로 알고 있습니다. 위의 예에서 볼 수 있듯이 ls 명령의 실행은 기본적으로 화면으로 리디렉션되는 STDOUT을 생성합니다. 나는 자주 쉘 스크립트 작성자 아니지만, 예를 들어 나는 리눅스에 대한 DWIM 펄의 빌드 스크립트에 대한이 필요. 이 섹션에서는 몇 가지 기술을 이해하는 데 도움이 되는 몇 가지 스크립트를 찾을 수 있습니다. if-then-else 스타일 조건부는 다른 언어와 마찬가지로 bash에 존재합니다. 다음은 표준 입력에 의해 제어되는 while 루프의 예입니다. STDOUT에서 STDIN에서 읽기 명령으로의 리디렉션 체인이 있을 때까지 while 루프가 계속됩니다. bash에서 변수 범위는 프로세스 수준에 있습니다: 각 프로세스에는 모든 변수의 자체 복사본이 있습니다. 다시 말하지만, 이러한 동일한 인용 동작은 * 또는 @: 그러나 예제를 약간 수정하면 중단되는 것처럼 보입니다.

일단 선언되면 함수는 거의 별도의 스크립트처럼 작동합니다: 함수에 대한 인수는 9번째 인수에 대한 $n 옵니다. 먼저 배쉬 인터프리터가 어디에 있는지 알아내야 합니다. 명령줄에 다음을 입력: 현재 디렉토리에서 스크립트를 실행하려면 ./scriptname을 실행하고 원하는 매개 변수를 전달할 수 있습니다. 셸이 스크립트를 실행하면 #!/path/to/인터프리터를 찾습니다. bash의 대부분의 컨텍스트에서 glob 패턴은 일치하는 모든 파일 이름의 배열로 자동으로 확장됩니다: NOTE:이 자습서의 모든 bash 셸 스크립트는 설명으로 읽히지 않는 shebang: »#! »로 시작됩니다. 첫 번째 줄은 이 경우 인터프리터를 넣는 장소이기도 합니다. 다음 예제에서는 표준 오류(stderr)를 파일로 리디렉션하고 기본적으로 화면으로 stdout합니다. STDOUT은 화면에 표시되지만 STDERR은 STDERR이라는 파일로 리디렉션됩니다 : 초보자를위한 배쉬 가이드조차도 오해의 소지가있는 예제가 포함되어 있습니다.이 모든 것을 함께 넣으면 bash에서 프로그램을 작성할 수 있습니다. bash의 주석은 #으로 시작하여 줄의 끝까지 실행됩니다: STDOUT 및 STDERR을 동일한 파일로 리디렉션할 수도 있습니다.

Dark Bugsybash script 예제