셸 스크립트를 만드는 것은 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
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과 동일 .
사용할 수 있는 다른 비교 연산자는 다음과 같습니다.
-eq
– 같음-ne
– 같지 않음-lt
– 미만-le
– 보다 작거나 같음-lt
– 미만-ge
– 크거나 같음
예를 들어, if-문 아래 블록은 '열심히 일하세요를 출력합니다. ' 입력 점수가 50보다 작은 값인 경우 .
if [[ $x -lt 50 ]]; then echo 'Work Harder!' fi
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
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
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를 반복하지 않을 것입니다.
루핑 구문 사용
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까지의 모든 숫자를 인쇄합니다.
For 루프
while 루프처럼 , for 루프 반복적으로 코드를 실행하는 데 사용됩니다. 즉. 사용자가 정의한 코드 실행을 최대한 많이 반복합니다.
구문은 다음과 같습니다.
for var in 1 2 3 4 5 N do command1 command2 done
for 루프 아래는 1부터 10까지 반복하고 화면에서 값을 처리합니다.
이를 달성하는 더 좋은 방법은 이중 중괄호 { }
를 사용하여 범위를 정의하는 것입니다. 모든 숫자를 입력하는 대신 표시된 대로.
#!/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
출력에서 인쇄된 첫 번째 변수가 쉘 스크립트의 이름임을 알 수 있습니다(이 경우 test.sh). . 이후 쉘 스크립트에 정의된 위치 매개변수에 해당하는 이름이 출력됩니다.
위치 매개변수는 값을 변수에 명시적으로 할당하는 대신 입력되는 데이터를 사용자 정의하는 데 도움이 된다는 점에서 유용합니다.
쉘 명령 종료 코드
종료 코드란 무엇인가라는 간단한 질문부터 시작하겠습니다. ?
사용자 또는 셸 스크립트가 셸에서 실행한 모든 명령에는 종료 상태가 있습니다. 종료 상태는 정수입니다.
0의 종료 상태 명령이 오류 없이 성공적으로 실행되었음을 의미합니다. 1~255 사이의 값 명령이 실패했거나 성공적으로 실행되지 않았음을 나타냅니다.
명령의 종료 상태를 찾으려면 $?
를 사용하십시오. 쉘 변수.
종료 상태 1은 일반적인 오류 또는 sudo 권한 없이 파일 편집과 같은 허용되지 않는 오류를 나타냅니다.
종료 상태 2는 명령 또는 내장 쉘 변수의 잘못된 사용을 나타냅니다.
127 종료 상태는 일반적으로 '명령을 찾을 수 없음을 생성하는 잘못된 명령을 가리킵니다. ' 오류.
스크립트 내에서 셸 명령의 출력 처리
bash 스크립팅에서는 나중에 사용할 수 있도록 명령의 출력을 변수에 저장할 수 있습니다. 이를 쉘 명령 대체라고도 하며 다음과 같은 방법으로 수행할 수 있습니다.
variable=$(command) OR variable=$(/path/to/command) OR variable=$(command argument 1 argument 2 ...)
예를 들어 날짜를 저장할 수 있습니다. 오늘이라는 변수의 명령 쉘 스크립트를 호출하여 현재 날짜를 표시합니다.
#!/bin/bash today=$(date) echo “Today is $today”
다른 예를 들어보겠습니다. 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
이것으로 간단한 셸 스크립트 생성에 대한 튜토리얼이 끝났습니다. 이 가치를 발견하셨기를 바랍니다.