Bash 프로그래밍-3 부

안전한 우리의 개념들 Bash에서 완벽하게 작동하는 프로그래밍에 매우 유용한 두 가지 도구를 배웁니다. 만드는 법 배우기 기능들 정의 파이프 처음에는 복잡해 보일지 모르지만 utilidad 그들은 우리에게 제공합니다.

파이프

특히, 파이프 라인은 너무 많은 차례를 거치지 않고 한 프로세스의 출력을 다른 프로세스의 입력으로 지시 할 수있는 방법으로, 코드 줄을 줄이고 결과 저장 변수를 분배하고 스크립트의 효율성.

파이프는 일반적으로 기호 | 식을 연결할 수 있습니다. 기본적으로 사용되지만 파이프를 작성하는 다른 방법이 있습니다.

예 : 최근 커널 메시지 인쇄

#dmesg를 사용하면 시스템 부팅 중에 최근 커널 메시지와로드 된 드라이버를 볼 수 있습니다. tail은 파일 또는 #command의 마지막 부분을 인쇄합니다.

dmesg | 꼬리

원하는만큼 복잡 할 수 있지만 파이프 라인의 기본 구조는 한 명령의 결과를 다음 명령에 대한 입력으로 사용할 수 있도록하여 연속 파이프를 계속 추가하면 새 명령에 대한 입력을 제공 할 수 있습니다.

함수

함수는 다시 작성하지 않고도 여러 번 실행할 수 있도록 함께 그룹화 된 명령문 세트입니다. 그것은 우리가 어떤 음식을 요리하는 법을 배울 때 우리는 그 요리법을 시트에 쓸 것이라고 생각하고, 그 음식을 요리하고 싶을 때마다 같은 요리법으로 새로운 시트를 다시 쓰는 대신 레시피를 참조한다고 생각하는 것과 같습니다.

아마도 함수에서 가장 중요한 점은 매개 변수를 전달할 수있는 가능성이며,이를 처리하고 출력을 생성하는 데 사용할 데이터입니다. 그 구조는 다음과 같습니다.

function function-name {

프로세스들

}

예 : tcp 프로토콜에서 작동하는 서비스를 보여주는 함수. 더 많은 파이프를 적용하는 방법도 볼 수 있습니다.

# 우리는 함수 이름을 정의합니다. 우리가 좋아하는 이름이 될 수 있습니다.

function services_tcp {

#cat은 연결된 포트가있는 모든 서비스를 포함하는 # / etc / services 폴더의 내용을 연결하고 표시합니다.

# 첫 번째 grep은 목록을 가져 와서 주석을 제거합니다. –v를 사용하면 결과가 반전됩니다.

# 두 번째 grep은 tcp와 관련된 것만 표시합니다.

고양이 / 기타 / 서비스 | grep –v "^ #"| grep tcp

}

이 함수를 실행해야 할 때 이름으로 호출하면됩니다.

tcp_services

이 경우 매개 변수없이 작동합니다. 그것들이있는 경우 함수가 제대로 작동하도록 추가해야합니다. 그렇지 않으면 함수가 제대로 작동하지 않습니다. return을 사용하면 함수가 프로세스의 결과로 값을 반환 할 수 있습니다.

예 : 두 숫자의 합을 계산하는 입력 매개 변수가있는 함수.

#! / bin / bash
함수 합계 ()
{
# 따옴표 안에 작업을 실행할 수 있습니다.
"결과 = $ 1 + $ 2"

#return은 정수 값을 반환 할 수 있습니다. 반환이 실행되면 값은 변수 $?
$ 결과를 반환합니다.
}
 
#sum 함수가 호출되고 2 개의 입력 매개 변수를 전달합니다.

2 3 추가

# $의 값을 인쇄합니까? 따옴표로 묶인 변수의 실제 값을 평가하는 에코
echo -e "결과 = $?";

Juan Carlos Ortiz에게 감사드립니다!


기사의 내용은 우리의 원칙을 준수합니다. 편집 윤리. 오류를보고하려면 여기에.

7 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   Nill 포인터

    잘 모르겠지만 함수의 return 문은 "exit"의 오류 코드처럼 0에서 255 사이의 정수만 반환하는 역할을합니다. 일반적으로 모든 것이 정상이면 0이고 다른 경우에는 다른 숫자입니다. 예제에서는 이것이 작동하지만 결과를 return으로 반환하는 것은 좋지 않다고 생각합니다.
    저기서 말도 안되는 소리 야! 눈! 하아!

  2.   주앙

    진실은 나를 의심하게 만들었다. 어쨌든 함수의 문제를 피하기 위해 함수가 값 또는 문자열을 반환하거나 인쇄하려고 할 때 반환을 echo로 바꿀 수 있습니다.

  3.   Abel S. Mount Big

    이 문제를 해결하려면 sum 함수에서 bc 명령을 사용할 수 있습니다. result =`echo $ 1 + $ 2 | 기원전 -ql`

  4.   루이스 미겔

    좋은,

    시스템 전체를 실행하기 위해 bash 파일을 저장할 수있는 위치를 알고 싶습니다. 이는 bin 디렉토리가 아니지만 백업 할 수있는 곳입니다.

    감사하시오.

  5.   호아킨

    감사합니다. 대본부터 시작합니다. 사실 이것은 매우 유용하며 지식을 매우 친절하게 공유합니다!
    안부

    1.    리눅스를 사용하자

      감사합니다! 포옹!
      파블로

  6.   CRISTHIAN

    구문 오류 : "("예기치 않은
    예제를 실행하려고 할 때 오류가 발생합니다. 정확히 똑같이 복사했습니다.

    무엇을 할 수 있습니까? 나는 우분투 14.10에 있습니다