5분 안에 셸 스크립트 배우기

카탈로그
  • 시작하기
  • 리뷰
  • 변수
  • 회로
  • 조건문
  • 사건
  • 기능
  • 사용자 입력
  • 산술
  • 어레이
  • 셸 스크립트 디버깅
  • 프롬프트 및 도구
  • 개시하다
    스크립트라는 텍스트 파일을 만듭니다.sh 파일 확장자 (필요하지 않음), 다음 내용을 추가합니다.
    #!/bin/bash
    echo "Hello, World!"
    
    다음 명령을 실행하여 방금 만든 셸 스크립트를 실행해야 합니다.sudo chmod +x script.sh현재, 스크립트를 실행해서 사용할 수 있습니다source script.sh
    Hello, world!
    
    코멘트
    모든 다른 프로그래밍 언어와 마찬가지로 스크립트의 기능을 정확하게 설명하기 위해 스크립트에 주석을 추가할 수 있습니다.Bash 스크립트는 한 줄 및 여러 줄 주석을 지원합니다.
    단행설
    #!/bin/bash
    # This is a single line comment
    echo "Hello, world!"
    
    다행평론
    #!/bin/bash
    : '
    This is a multi-line comment
    spanning not just one line
    but many lines
    '
    echo "Hello, world!"
    
    변량
    Bash에는 두 가지 유형의 변수가 있습니다.
  • 사용자 정의 변수: 사용자가 셸 스크립트에서 정의한 변수로 보통 소문자입니다.
  • #!/bin/bash
    message="Shell scripting tutorial"
    echo $message
    
  • 셸이 정의한 변수: Bash 셸이 정의한 변수로 대개 대문자로 되어 있습니다.
  • #!/bin/bash
    echo $BASH_VERSION
    
    기본 Bash 변수는 다음과 같습니다.
    $$- 현재 셸의 PID
    $! - 마지막 백그라운드 명령의 PID
    $? - 마지막 명령의 종료 상태
    $0- 현재 명령의 이름
    $1-현재 명령의 첫 번째 매개 변수의 이름
    $9- 현재 명령의 아홉 번째 매개 변수의 이름
    $@- 현재 명령의 모든 매개변수(공백 및 따옴표 유지)
    $* - 현재 명령의 모든 매개변수(공백 및 따옴표 없음)
    서식 적용 변수
    # The string 'Not defined' is printed if the variable "message" has not been defined.
    echo ${message:-"Not defined"}
    
    # The string "Not defined but now defined and assigned", if the variable did not exist prior.
    echo ${message:="Not defined but now defined and assigned"}
    
    
    # The string "Error: the variable does not exist" is printed if you try to print a variable does not exist.
    echo ${message:?"Error: the variable does not exist"}
    
    var1='shell scripting'
    var2='BASH SCRIPTING'
    echo ${var1^^} # Print a variable in all uppercase.
    echo ${var1^} # Convert the first letter to uppercase.
    echo ${var2,,} # Print a variable in all lowercase.
    echo ${var2,} # Convert the first letter to lowercase.
    
    순환하다
    순환하는 C 스타일.
    #!/bin/bash
    
    for ((i=0; i<10; i++))
    do
        echo $i
    done
    
    반복되는 파이썬 스타일
    #!/bin/bash
    
    for number in "1 2 3 4 5"
    do
        echo $number
    done
    
    While 주기
    #!/bin/bash
    
    
    count=0
    while [[ $count -lt 10 ]]
    do
        echo $count
        (( count++ ))
    done
    
    순환할 때까지
    #!/bin/bash
    
    count=10
    until [[ $count -eq 0 ]]
    do
        echo $count
        (( count-- ))
    done
    
    선택 주기
    셸 스크립트를 만드는 메뉴 형식 인터페이스를 선택할 수 있습니다.
    #!/bin/bash
    
    options="Yes No Maybe"
    ps3="Select your option" # Customize your menu selection.
    
    select option in $options
    do
        if [[ $option == "Yes" ]]
        then
            echo "You chose Yes"
        elif [[ $option == "No" ]]
        then
            echo "You chose No"
            exit
        elif [[ $option == "Maybe" ]]
        then
            echo "You chose Maybe"
        else
            echo "Invalid option chosen"
            exit
        fi
    done
    
    조건문
    Bash는 다른 프로그래밍 언어에서 자주 사용하는if, elif,else 조건 연산자를 지원합니다.
    지원되는 Bash 비교 연산자는 다음과 같습니다.
  • 정수 비교 연산자
  • 문자열 비교 연산자
  • 복합 비교 연산자
  • 파일 비교 연산자
  • 정수 비교 연산자


    - 흥정은
    -ne은 같지 않습니다.
    -gt 이상
    - ge가 크거나 같음
    - 아니요
    -le 작거나 같음
    <보다 작음 - 괄호 안에 놓기
    <= 작거나 같음
    > 보다 큼
    >= 크거나 같음

    문자열 비교 연산자


    ... 과 같다
    ==는
    = 같지 않음
    < ASCII 미만 알파벳 순서
    > ASCII보다 큰 알파벳 순서
    -z 문자열이 비어 있음(즉, 길이가 0임)
    - n 문자열이 비어 있지 않습니다(즉,! 길이는 0).

    복합 비교 연산자


    - 논리 및
    -o 논리 또는
    #!/bin/bash
    
    a=1
    b=2
    
    if [[ $a -gt $b ]]
    then
        echo $a is greater than $b
    elif [[ $a -lt $b ]]
    then
        echo $a is less than $b
    elif [[ $a -eq $b ]]
    then
        echo $a is equal to $b
    else
        echo "unknown condition"
    fi
    
    
    [[ -e "$file" ]] # True if file exists
    [[ -d "$file" ]] # True if file exists and is a directory
    [[ -f "$file" ]] # True if file exists and is a regular file
    [[ -z "$str" ]]  # True if string is of length zero
    [[ -n "$str" ]]  # True is string is not of length zero
    -r file has read permission
    -w file has write permission
    -x file has execute permission
    file1 -nt file2 file file1 is newer than file2
    file1 -ot file2 file file1 is older than file2
    file1 -ef file2 files file1 and file2 are hard links to the same file
    
    [[ ... ]] && [[ ... ]] # And
    [[ ... ]] || [[ ... ]] # Or
    
    안건
    Case 문은 if-elif-else 문장의 집합을 간소화하고 대체할 수도 있고 Select 문장과 함께 사용할 수도 있다.
    #!/bin/bash
    read -p "Make your choice: " option
    case $option in
        "Yes")
        echo "You chose 'Yes'";;
        "Maybe")
        echo "You chose 'Maye'";;
        "No")
        echo "You chose 'No'";;
        *) # default option
        echo "Unknown option";;
    esac
    
    # Create a Menu system with Select and Case
    
    options="Yes No Maybe"
    select option in $options
    do
        case $option in
        "Yes")
        echo "You chose 'Yes'";;
        "Maybe")
        echo "You chose 'Maye'";;
        "No")
        echo "You chose 'No'"
        exit;;
        *) # default option
        echo "Unknown option";;
       esac
    done
    
    기능
    Bash의 함수는 일반 프로그래밍 언어의 함수와 유사하지만, 유일한 차이점은 이름만 입력하고 괄호를 사용하지 않고 함수를 실행하는 것이다.또한 Bash 함수에 반환 값이 없습니다.
    #!/bin/bash
    
    # Define a simple function
    function greeter() {
        echo "Hello, world!"
    }
    
    # Define a function that accepts arguments
    function greeter1() {
        echo $1
    }
    
    실행greeter:
    Hello, World!"
    
    매개 변수를 보내서 함수를 호출합니다greeter Hello, world:
    Hello, World!"
    
    사용자 입력
    기본 및 read 키워드를 사용하여 사용자 입력을 허용할 수 있습니다.
    #!/bin/bash
    read var # The user inputted value is saved in a variable called *var*
    
    read -p "Enter your name" name # A prompt "Enter your name" is displayed to the user and the supplied value is saved in the variable "name".
    
    read -s -p "Enter your password" password # "This hides the user inputted value. Useful for password inputs.
    
    read -p "Enter all your names" -a names # If you want to accept more than one value from users. It creates an Array object called *names*
    
    산술
    #!/bin/bash
    
    a=1
    b=2
    $((a + b)) # Addition
    $((a - b)) # Subtraction
    $((a * b)) # Multiplication
    $((a / b)) # Division
    $((a % b)) # Modulus
    
    부동점수 처리, 숫자의 제곱근 구하기 등 고급 산술을 하려면, 내장된 bc 명령을 사용해야 한다.
    #!/bin/bash
    echo "scale=2; sqrt((49)) | bc -l # scale determines the number of decimal places.
    echo "scale=3; 3.142 * 4.2" | bc -l
    
    어레이
    Bash에는 두 가지 변수가 있습니다.
  • 스칼라 변수(단일 값 포함)
  • 수 그룹 변수(여러 값 포함)
    Bash 배열은 0 기반 배열, 즉 0 위치에서 시작합니다.
  • #!/bin/bash
    
    names=(Jack John Jill Scot)
    ${names[@]} # This prints all the variables
    ${#names[@]} # Counts the number of items in the *names* array.
    ${!names[@]} # Returns the indexes of the items in the array.
    unset names[<index>] # Removes the item in the array at the specified index.
    ${names[0]} # Returns the first item of the array.
    ${names[-1]} # Returns the last item of the array.
    
    팁, 팁 및 도구
  • shellcheck을 사용합니다.net에서 셸 스크립트의 오류를 찾습니다.
  • 셸 스크립트를 디버깅처럼 실행할 수 있습니다bash -x script.sh . 이것은 디버그 모드에서 스크립트를 실행합니다.
  • 셸 스크립트에서 인터럽트 설정 가능
  • #!/bin/bash
    
    set -x
    message="This is a shell scripting tutorial"
    echo $message
    set +x
    
    따라서 Bash shell 스크립트에 대한 5분간의 소개를 마쳤습니다.나는 이것이 너에게 더욱 정통한 여정을 열 수 있기를 바란다.

    좋은 웹페이지 즐겨찾기