Bash 프로그래밍-2 부

XNUMX 부 이것의 미니 튜토리얼 프로그래밍 강타, 우리가 사용하는 법을 배우는 곳 ciclos 그리고 우리의 기능을 개선하는 데 도움이 될 기타 도구 스크립트.

If 조건부

If의 기능은 필터를 적용하고 적용된 각 필터 유형에 대한 작업 또는 작업을 수행하는 것입니다. 그 구조는 다음과 같습니다.

If [조건]; 그런 다음 elif 명령 [조건]; 다음 else 명령; fi 명령

각 섹션의 For 루프 옆에 예제가 표시됩니다.

사이클

1. While : 조건이 참인 한 do와 done 사이에 지정된 모든 명령을 실행합니다. 비교 연산자를 전달하려면 표현식이 괄호 안에 있어야합니다.

CONDITION / COMMAND는 명령을 수행하는 동안

예 : 숫자의 곱셈표

#! / bin / bash X = 1 echo "숫자를 입력하고 ENTER를 누르세요"read M # 루프는 X가 10보다 작거나 같음을 제어하는 ​​반면 [$ X –le 10] do #R에서 우리는 X의 곱셈을 저장합니다. MR = $ [X * M] #이 곱셈은 화면에 인쇄됩니다. echo "$ M * $ X = $ R"#let을 사용하면 X의 값을 1 단위 증가시킵니다. let X = $ X + 1 done

2. For : 각주기에서 특정 작업을 수행하는 데 사용되는 변수에 요소 목록을 저장합니다.

ELEMENTS의 VARIABLE에 대한 명령 수행

예 : 한 폴더에서 다른 폴더로 파일을 복사하여 이전 파일을 대체하는 프로그램.

# / bin / bash # 소스 및 대상 디렉토리를 설정합니다 ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # 우리는 소스에 위치합니다. cd $ ORIGIN # 모든 파일 중에서 # * do ARCH-DESTINATION = "$ DESTINATION / $ FILE"에서 FILE에 대한 FILE을 호출합니다. # -f 디렉토리는 우리에게 좋은 것이 아니기 때문에 일반 파일을 필터링합니다. –Nt는 대상 폴더에서 찾은 파일보다 "최신"파일 # 개를 필터링합니다. if [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; then echo "Copying $ FILE ..."# cp cp $ FILE $ ARCH-DESTINATION fi done # cd 소스 폴더를 종료합니다. cd

또 다른 예 : 사용자가 컴퓨터에서 생성 한 임의의 숫자를 추측해야하는 스크립트.

# / bin / bash # 1부터 10까지 임의의 숫자가 생성되고, # RANDOM RANDOM = $ [$ RANDOM % 10 + 1]에 저장되고 [1] do echo –n "Enter a number :"read NUM # 사용자가 선택한 숫자가 RANDOM과 #equal인지 비교하십시오. $를 사용하여 변수의 # 값을 평가하는 것을 잊지 마십시오. if [“$ NUM –eq“$ RANDOM”]; 그런 다음 echo "정답입니다!" #break는 break 동안 루프를 끝낼 수 있습니다. # 숫자가 RANDOM elif [“$ NUM –gt“$ RANDOM”]; then echo "더 적습니다" "그렇지 않으면 RANDOM보다 큽니다. else echo"IS 더 큽니다 "fi done

3. 종료 : While과 구조가 매우 유사하지만 조건 평가가 부정적 일 때 코드가 항상 실행된다는 점, 즉 "조건이 발생할 때까지"프로그램이 계속 실행된다는 점을 제외하면

CONDITION / COMMAND가 명령을 수행 할 때까지

예 : 숫자 10-20을 내림차순으로 인쇄

#! / bin / bash CONT = 20 # 카운터가 10보다 작은 한 (-lt, "lower #than") 코드는 [$ CONT -lt 10]까지 실행됩니다. do echo "COUNTER $ CONT"#A CONT는 단위로 뺍니다 let CONT- = 1 done

4. 선택 :이 마지막주기는 일반적으로 메뉴를 빠르게 만드는 데 사용되므로 특별한 경우입니다. For 루프와 유사하게 작동합니다.

완료된 명령 목록에서 VARIABLE을 선택하십시오.

예 : 사용자에게 스크립트를 계속하거나 종료 할 수있는 기능을 제공합니다.

#! / bin / bash #item은 #user가 선택한 것에 응답하는 변수입니다. Continue와 Finish는 다른 옵션을 추가 할 수 있지만 사용할 수있는 #options입니다. # Continue Finish에서 항목을 더 선택합니다. 프로그램을 종료 한 다음 휴식으로 사이클을 종료합니다. if [$ item = "Finish"]; 그럼 끝났어
Juan Carlos Ortiz에게 감사드립니다!

코멘트를 남겨주세요

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

*

*

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

  1.   중간 어려움

    다음과 같이 생각합니다. tar -cf-Directory | (cd / 기타 / 디렉토리; tar -xvf-)

    그런 다음 / another / directory / Directory
    그런 식으로 디렉토리를 압축하고 다른 위치에서 압축을 풉니 다.

  2.   미구엘 엔젤

    안녕하세요, 좋은 선생님, 저는 주제에 대해 배우고 있으며 모든 것이 괜찮습니다. 저만 도와 줄 수있는 프로그램을 만들 수 없었습니다.

    소스 파일의 목록을 매개 변수로 수신하는주기를 수행해야합니다.이 목록은 이름 (확장자 없음) 만 가져 오므로주기는 다음을 수행하고 디렉토리에서받은 이름을 찾습니다 (찾을 것입니다). , 파일 (확장자가 이미있는 전체 이름)과 절대 경로를 추출 및 복사하고 다른 대상 파일에 만듭니다.

    지금까지 다음이 있습니다.

    줄을 읽는 동안
    do
    echo -e "$ 라인"
    find / home / myuser / dof "$ line"-exec readlink -f {};
    done <testlist.txt 지금까지 파일, 모든 줄을 읽었지만 그 파일을 찾아서 정보를 추출 할 수는 없습니다. 제발 도와 주시면 감사합니다. 건배

  3.   파멜라 갈라 비즈

    기여해 주셔서 대단히 감사합니다 🙂

  4.   마리오 하비에르

    안녕 ... 나는 당신이 다음 연습에 도움을 줄 수 있기를 바랍니다 ... 모든 기존 디렉토리 및 파일에 대한 사용자 및 그룹을 지정하고 파일 및 디렉토리에 권한을 할당하는 것 외에도 지정된 디렉토리에 tgz로 파일 압축을 풉니 다.
    참고 : 읽고 쓸 준비가 된 파일
    디렉토리 실행 권한

  5.   주앙

    ARCH-DESTINATION은 대상 파일 경로를 저장하고 중복성을 위해 저장하려는 변수입니다. 그런 다음이 변수에 DESTINATION 변수를 지정합니다.이 변수에는 문서 폴더 경로가 포함되어 있으며 파일 이름이 포함 된 "변수"FILE을 추가합니다. 예를 들어, 해당 파일이 list.doc 인 경우 ARCH-DESTINATION 변수는 /home/Usuario/Documentos/listado.doc와 같습니다.

  6.   Linux를 사용합시다

    이전 기사입니다. 다음에서 액세스 할 수 있습니다. http://usemoslinux.blogspot.com

    포옹! 폴.

  7.   솔직한

    굿모닝 메이트는 감사합니다. 블로그를 아주 잘했지만 Bash에서 프로그래밍의 첫 부분을 얻을 수 없습니다. 감사합니다.

  8.   사이토 모르 드라 우그

    두 가지 특별한 부분, 진심으로 축하합니다.

    단순히 훌륭합니다.

  9.   프레디

  10.   휴고

    안녕하세요, 저는 CASE로 프로그램을 만들고 있습니다. 제가 원하는 것은 무엇이며 어떻게해야하는지 모르겠습니다. 예를 들면 다음과 같습니다.

    echo 옵션을 선택합니다.
    에코
    echo 1. 옵션 1
    echo 2. 옵션 2
    echo 3. 옵션 3
    echo 4. 옵션 4
    echo 5. 종료
    var 읽기
    case "$ var"in
    1)
    echo "옵션 1을 선택했습니다."
    ;;
    2)
    echo "옵션 2를 선택했습니다."
    ;;
    3)
    던졌다 "….."
    ;;
    4)
    던졌다 "…."
    ;;
    5)
    던졌다 "…"

    ;;
    *)
    echo "잘못된 옵션"
    ;;
    그 C

    네, 제가 어떻게해야할지 모르겠습니다. 제가 탈퇴 할 4 번 옵션을 선택할 때 제가 정말 탈퇴 할 것인지 물어보고 2 가지 옵션 Y & N을 제공합니다.

    다른 하나는 1..5가 아닌 다른 것을 선택할 때 대본에서 나에게 투표하지 않는다는 것입니다.

    감사합니다.

  11.   다파마21

    안녕하세요, 저는 한 달 전에 스크립팅을 시작했으며 귀하의 스크립트 게시물 덕분입니다. 나는 약 1-15을 할 것입니다. 미리 감사드립니다. 하지만 이제 선생님 께서 제가 정체 된 직업을 주셨습니다. 교사가 묻기 때문에 :
    디렉토리를 전달하고 해당 디렉토리에있는 모든 파일을 알파벳순으로 집에 복사하고 이름을 file1 file2 등으로 지정합니다.
    이제 나는 찾기 또는 찾기의 순간에 find를 사용하고 싶었지만 dev null을 통해 오류 코드를 입력하면 권한이 거부되고 잘못되어 위치를 찾습니다.
    $ 1 찾기 | grep "/ $ {1} \ $"
    하지만 물론 이것으로 모두 나옵니다 ...
    읽어 주시면 대단히 감사합니다.
    당신이 나를 도울 수 있다면 그것은 큰 호의가 될 것입니다.

  12.   루이스

    저를 도와 주셨으면합니다.
    1.- 키보드에 정수를 입력하고 화면에 그 숫자를 두 번, 세 배로 표시합니다. 2.- 키보드로 입력 한 숫자를 3으로 나눌 수 있는지를 결정하는 프로그램을 만듭니다.
    3.- 다음의 합을 찾는 프로그램을 만드세요 : ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- 합계 1 + 3 + 5 + 7 + 9 · · · + (2n + 1)을 찾는 프로그램을 만드십시오.
    5.- 화면에 Linux라는 단어를 10 번 출력하는 프로그램을 만듭니다.
    6.- 사용자가 지정한 횟수만큼 Linux라는 단어를 화면에 인쇄하는 프로그램을 만듭니다.
    7.- 시간 단위로 금액을 입력하고 분과 초로 변환합니다.
    8.- 삼각형의 면적 계산
    9.- 키보드로 숫자를 입력 한 다음 2를 입력하면 제곱, 3 제곱, 4에서 네 번째 등 최대 6까지 입력해야합니다.
    10- 학생이 지불해야하는 연금을 계산하고, 전문 코드를 입력해야하며, 체납 일수를 계산합니다.
    코디 고
    전문

    하루 동안
    1
    컴퓨팅
    160
    1
    2
    육아
    150
    1.5
    3
    사무국
    140
    2
    4
    관광
    180
    2.5
    5
    회계
    160
    1
    공부하는 전문 분야, 연금 비용, 불이행 및 지불 할 총액을 보여 주어야합니다.

  13.   charly

    안녕하세요, 누군가 나를 도울 수 있습니까?
    «키보드로 세 단어를 요청하고 A부터 z까지 알파벳 순서로 표시»가 필요합니다.
    LINUX porfaborrrr의 Bash 또는 sh 언어