Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Linux에서 간단한 셸 스크립트를 만드는 방법

셸 스크립트를 만드는 것은 Linux 사용자가 손끝에서 가지고 있어야 하는 가장 필수적인 기술 중 하나입니다. 셸 스크립트는 반복적인 작업을 자동화하는 데 큰 역할을 합니다. 그렇지 않으면 한 줄씩 실행하는 지루한 작업이 됩니다.

이 자습서에서는 모든 Linux 사용자가 수행해야 하는 몇 가지 기본 셸 스크립팅 작업을 강조합니다.

1. 간단한 셸 스크립트 만들기

셸 스크립트는 ASCII로 구성된 파일입니다. 텍스트. 간단한 셸 스크립트를 만드는 것으로 시작하고 이를 위해 텍스트 편집기를 사용할 것입니다. 명령줄 및 GUI 기반의 많은 텍스트 편집기가 있습니다. 이 가이드에서는 vim 편집기를 사용합니다.

"Hello world를 표시하는 간단한 스크립트를 만드는 것으로 시작하겠습니다. "를 실행할 때.

$ vim hello.sh

파일에 다음 내용을 붙여넣고 저장합니다.

#!/bin/bash
# Print Hello world message
echo "Hello World!"

쉘 스크립트를 한 줄씩 살펴보겠습니다.

  • 첫 번째 줄 – #!/bin/bash – shebang 헤더로 알려져 있습니다. 이것은 스크립트를 해석하는 데 사용할 프로그램을 나타내는 특수 구조입니다. 이 경우 bash가 됩니다. /bin/bash로 표시된 쉘 . Python과 같은 다른 스크립팅 언어가 있습니다. #!/usr/bin/python3으로 표시됩니다. 및 shebang 헤더는 #!/usr/bin/perl로 표시됩니다. .
  • 두 번째 줄은 주석입니다. 주석은 스크립트가 실행될 때 쉘 스크립트가 수행하는 작업과 실행되지 않는 작업을 설명하는 명령문입니다. 주석 앞에는 항상 해시 기호 #가 옵니다. .
  • 마지막 줄은 'Hello World ' 메시지가 터미널에 표시됩니다.

다음 단계는 chmod를 사용하여 실행 권한을 할당하여 스크립트를 실행 가능하게 만드는 것입니다. 표시된 대로 명령합니다.

$ chmod +x  hello.sh

마지막으로 다음 명령 중 하나를 사용하여 셸 스크립트를 실행합니다.

$ bash hello.sh
OR
$ ./hello.sh
Linux에서 간단한 셸 스크립트를 만드는 방법

2. 조건문을 사용하여 코드 실행

다른 프로그래밍 언어와 마찬가지로 조건문 결정을 내리기 위해 bash 스크립팅에서 사용되며 구문이 약간만 다릅니다. 만약 , if-else,엘리프 조건문.

if 문의 예

만약 문은 단일 또는 여러 조건을 테스트하는 데 사용할 수 있습니다. if의 기본적인 사용부터 시작하겠습니다. 단일 조건을 테스트하는 명령문. 만약 문은 if ... fi로 정의됩니다. 블록.

if command
then
  statement
fi

아래의 쉘 스크립트를 살펴보자.

#!/bin/bash
echo 'Enter the score'
read x

if [[ $x == 70 ]]; then
  echo 'Good job!'
fi

위의 셸 스크립트는 사용자에게 점수를 제공하라는 메시지를 표시한 다음 변수 x에 저장됩니다. . 점수가 70에 해당하는 경우 , 스크립트는 "잘했습니다! 출력을 반환합니다. ". 비교 연산자 == x 변수에 저장된 점수가 입력되었는지 테스트하는 데 사용됩니다. , 100과 동일 .

Linux에서 간단한 셸 스크립트를 만드는 방법

사용할 수 있는 다른 비교 연산자는 다음과 같습니다.

  • -eq – 같음
  • -ne – 같지 않음
  • -lt – 미만
  • -le – 보다 작거나 같음
  • -lt – 미만
  • -ge – 크거나 같음

예를 들어, if-문 아래 블록은 '열심히 일하세요를 출력합니다. ' 입력 점수가 50보다 작은 값인 경우 .

if [[ $x -lt 50 ]]; then
  echo 'Work Harder!'
fi
Linux에서 간단한 셸 스크립트를 만드는 방법

if-else 문의 예

두 가지 가능한 결과가 있는 상황의 경우:– 이것이든 저것이든 – if-else 문이 편리합니다.

if command
then
  statement1
else
  statement2
fi

아래 스크립트는 입력 점수를 읽고 70 이상인지 확인합니다. .

점수가 70 이상인 경우 , '수고하셨습니다. 합격했습니다! ' 메시지. 그러나 점수가 70 아래로 떨어지면 , 출력 '실패했습니다 '가 인쇄됩니다.

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -ge 70 ]]; then
  echo 'Great job, You passed!'
else
  echo  'You failed'
fi
Linux에서 간단한 셸 스크립트를 만드는 방법

if-elif-else 문의 예

여러 조건과 다른 결과가 있는 시나리오에서 if-elif-else 문이 사용됩니다. 이 문장은 다음과 같은 형식을 취합니다.

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

예를 들어 입력한 숫자가 90인지 확인하는 복권 스크립트가 있습니다. , 60 또는 30 .

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -eq 90 ]];
then
  echo “You have won the First Prize”

elif [[ $x -eq 60 ]];
then
  echo “You have won the Second Prize”

elif [[ $x -eq 30 ]];
then 
  echo “You have won the Second Prize”
else
  echo “Please try again”
fi
Linux에서 간단한 셸 스크립트를 만드는 방법

3. AND 논리와 함께 If 문 사용

if를 사용할 수 있습니다. AND 옆에 있는 문 두 가지 조건이 충족되면 작업을 실행하는 논리 연산자. && 연산자는 AND를 나타내는 데 사용됩니다. 논리.

#!/bin/bash

echo 'Please Enter your user_id'
read user_id

echo 'Please Enter your tag_no'
read tag_id

if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]];
then
  echo “Login successful”
else
  echo “Login failure”
fi

5. OR 논리와 함께 If 문 사용

또는을 사용할 때 ||로 표현되는 논리 기호, 예상 결과를 제공하려면 조건 중 하나가 스크립트에서 충족되어야 합니다.

#!/bin/bash

echo 'Please enter a random number'
read number

if [[ (number -eq 55 || number -eq 80) ]];
then
 echo 'Congratulations! You’ve won'
else
 echo 'Sorry, try again'
fi
를 반복하지 않을 것입니다. Linux에서 간단한 셸 스크립트를 만드는 방법

루핑 구문 사용

Bash 루프 특정 결과가 달성될 때까지 사용자가 일련의 작업을 수행할 수 있습니다. 이는 반복적인 작업을 수행할 때 유용합니다. 이 섹션에서는 다른 프로그래밍 언어에서도 볼 수 있는 몇 가지 루프를 살펴보겠습니다.

중 루프

이것은 작업하기 가장 쉬운 루프 중 하나입니다. 구문은 매우 간단합니다.

while  <some test>
do
 commands
done

아래의 while 루프는 실행될 때 1에서 10까지의 모든 숫자를 나열합니다.

#!/bin/bash
# A simple while loop
counter=1
while [ $counter -le 10 ]
 do
echo $counter
 ((counter++))
done

while 루프에 대해 논의해 보겠습니다.

변수 카운터 1로 초기화됩니다. . 변수가 10보다 작거나 같을 때 , 카운터 값은 조건이 충족될 때까지 증가합니다. echo $counter 줄 1에서 10까지의 모든 숫자를 인쇄합니다.

Linux에서 간단한 셸 스크립트를 만드는 방법

For 루프

while 루프처럼 , for 루프 반복적으로 코드를 실행하는 데 사용됩니다. 즉. 사용자가 정의한 코드 실행을 최대한 많이 반복합니다.

구문은 다음과 같습니다.

for var in 1 2 3 4 5 N
do
 command1
 command2
done

for 루프 아래는 1부터 10까지 반복하고 화면에서 값을 처리합니다.

Linux에서 간단한 셸 스크립트를 만드는 방법

이를 달성하는 더 좋은 방법은 이중 중괄호 { }를 사용하여 범위를 정의하는 것입니다. 모든 숫자를 입력하는 대신 표시된 대로.

#!/bin/bash
# Specify range in a for loop

for num in {1..10}
do
  echo $num
done
에서 for 루프에 대한 범위 지정 num

Bash 위치 매개변수

위치 매개변수는 값이 쉘에서 전달되지만 할당할 수 없을 때 스크립트에서 참조되는 특수 변수입니다. 위치 매개변수는 $0 $1 $2 $3부터 실행됩니다. … ~ $9 . $9 이상 값을 사용하려면 매개변수를 중괄호로 묶어야 합니다(예:${10}, ${11} …). 등등.

스크립트를 실행할 때 $0인 첫 번째 위치 매개변수 쉘 스크립트의 이름을 사용합니다. $1 매개변수는 터미널에 전달되는 첫 번째 변수인 $2를 사용합니다. 두 번째는 $3입니다. 세 번째 등등.

그림과 같이 test.sh 스크립트를 만들어 보겠습니다.

#!/bin/bash
echo "The name of the script is: " $0
echo "My first name is: " $1
echo "My second name is: " $2

그런 다음 스크립트를 실행하고 첫 번째와 두 번째 이름을 인수로 제공합니다.

# bash test.sh James Kiarie
Linux에서 간단한 셸 스크립트를 만드는 방법

출력에서 인쇄된 첫 번째 변수가 쉘 스크립트의 이름임을 알 수 있습니다(이 경우 test.sh). . 이후 쉘 스크립트에 정의된 위치 매개변수에 해당하는 이름이 출력됩니다.

위치 매개변수는 값을 변수에 명시적으로 할당하는 대신 입력되는 데이터를 사용자 정의하는 데 도움이 된다는 점에서 유용합니다.

쉘 명령 종료 코드

종료 코드란 무엇인가라는 간단한 질문부터 시작하겠습니다. ?

사용자 또는 셸 스크립트가 셸에서 실행한 모든 명령에는 종료 상태가 있습니다. 종료 상태는 정수입니다.

0의 종료 상태 명령이 오류 없이 성공적으로 실행되었음을 의미합니다. 1~255 사이의 값 명령이 실패했거나 성공적으로 실행되지 않았음을 나타냅니다.

명령의 종료 상태를 찾으려면 $?를 사용하십시오. 쉘 변수.

종료 상태 1은 일반적인 오류 또는 sudo 권한 없이 파일 편집과 같은 허용되지 않는 오류를 나타냅니다.

종료 상태 2는 명령 또는 내장 쉘 변수의 잘못된 사용을 나타냅니다.

127 종료 상태는 일반적으로 '명령을 찾을 수 없음을 생성하는 잘못된 명령을 가리킵니다. ' 오류.

Linux에서 간단한 셸 스크립트를 만드는 방법

스크립트 내에서 셸 명령의 출력 처리

bash 스크립팅에서는 나중에 사용할 수 있도록 명령의 출력을 변수에 저장할 수 있습니다. 이를 쉘 명령 대체라고도 하며 다음과 같은 방법으로 수행할 수 있습니다.

variable=$(command)
OR
variable=$(/path/to/command)
OR
variable=$(command argument 1 argument 2 ...)

예를 들어 날짜를 저장할 수 있습니다. 오늘이라는 변수의 명령 쉘 스크립트를 호출하여 현재 날짜를 표시합니다.

#!/bin/bash

today=$(date)

echo “Today is $today”
Linux에서 간단한 셸 스크립트를 만드는 방법

다른 예를 들어보겠습니다. Linux 시스템에서 유효한 로그인 사용자를 찾고 있다고 가정합니다. 어떻게 하시겠습니까? 먼저 모든 사용자(시스템, 프로세스 및 로그인 사용자)의 목록이 /etc/passwd에 저장됩니다. 파일.

파일을 보려면 cat 명령을 사용해야 합니다. 그러나 사용자 로그인 범위를 좁히려면 grep 명령을 사용하여 /bin/bash 속성을 사용하고 cut -c 1-10을 사용합니다. 이름의 처음 10자를 표시하는 명령입니다.

cat 명령을 저장했습니다. login_users 변수.

#!/bin/bash
login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10)
echo 'This is the list of login users:
echo $login_users
Linux에서 간단한 셸 스크립트를 만드는 방법

이것으로 간단한 셸 스크립트 생성에 대한 튜토리얼이 끝났습니다. 이 가치를 발견하셨기를 바랍니다.