logo

리눅스에서 쉘 스크립트를 만드는 방법

쉘은 운영 체제의 인터페이스입니다. 사용자로부터 명령을 받아 이를 운영 체제에 해석합니다. 여러 명령을 함께 실행하려면 쉘 스크립트를 작성하면 됩니다. 백업 수행과 같은 작업을 정기적으로 수행해야 하는 경우 셸 스크립트는 매우 유용합니다. 해당 명령을 나열하고 단일 스크립트로 모두 실행할 수 있습니다. 쉘 스크립트를 작성하고 Linux에서 실행하는 방법을 살펴보겠습니다.

쉘 스크립트 생성

Linux 시스템에 로그인하고 터미널을 열고 쉘 스크립트를 저장할 폴더로 이동하십시오. 쉘 스크립트는 확장자 .sh로 끝납니다. 첫 번째 쉘 스크립트를 작성해 보겠습니다. 입력하세요



touch script.sh>

이제 이 스크립트 파일은 기본적으로 실행 가능하지 않으므로 이 파일에 실행 권한을 부여해야 합니다. 입력하세요

chmod +x script.sh>

이제 이 쉘 스크립트에 몇 가지 명령을 추가하겠습니다. 원하는 텍스트 편집기(명령줄 기반 또는 GUI 기반)를 사용하여 이 셸 스크립트를 열고 몇 가지 명령을 추가하세요. 우리는 나노를 사용할 것입니다. 입력하세요

nano script.sh>

이 쉘 스크립트를 테스트하려면 다음 명령을 추가하십시오.



echo This is my first shell script touch testfile ls echo End of my shell script>

변경 사항을 저장하고 다음을 입력하여 쉘 스크립트를 실행하십시오.

./script.sh>

위 단계의 스크린샷

보시다시피 지정된 모든 명령이 실행되었습니다.



쉘 스크립트의 주석

쉘 스크립트에서 #으로 시작하는 모든 라인은 주석으로 처리되며 실행 중에 쉘에 의해 무시됩니다. 단, 이 글의 뒷부분에서 보게 될 shebang 라인은 예외입니다. 예를 살펴보겠습니다. 다음 내용으로 쉘 스크립트가 생성됩니다.

# This is a comment echo Testing comments in shell script>

쉘 스크립트의 주석

CSS를 사용하여 테두리

보시다시피 댓글이 무시됩니다.

쉘 스크립트의 변수

예, 셸 스크립트는 변수 사용을 지원하므로 변수 선언 중에 변수 유형을 정의할 필요가 없습니다. 변수에는 두 가지 유형이 있습니다.

  • 시스템 정의 변수
  • 사용자 정의 변수.

환경 변수라고도 하는 시스템 정의 변수는 일반적으로 대문자로 표시됩니다. printenv 명령을 사용하면 현재 환경 변수를 모두 볼 수 있습니다. 사용자 정의 변수는 사용자가 설정하며 스크립트 실행 중에만 존재합니다. 간단히 이름을 입력하고 = 기호로 값을 할당하여 변수를 정의할 수 있으며, 변수 이름 앞에 $를 추가하여 변수에 액세스할 수 있습니다. 다음 예제 스크립트에서는 변수를 보여줍니다.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

쉘 스크립트의 변수

쉘 스크립트 인터프리터 정의

Linux에는 bourne shell(sh), Korn Shell(ksh), GNU Bourne-Again Shell(bash) 등 다양한 쉘을 사용할 수 있습니다. sh 쉘용으로 작성된 스크립트를 쉘 스크립트라고 하며 ksh 쉘과 bash 쉘 모두에서 해석될 수 있습니다. ksh와 Bash는 원래 sh 쉘의 개선된 버전이며 sh보다 더 많은 기능을 가지고 있습니다. Bash는 일반적으로 대부분의 Linux 배포판의 기본 셸이며 bash 셸용으로 특별히 작성된 스크립트를 bash 스크립트라고 합니다.

스크립트가 다른 쉘 터미널에서 실행되더라도 스크립트가 사용할 쉘을 지정할 수 있습니다. 이렇게 하려면 #! 스크립트 파일 상단에 선택한 쉘의 절대 경로가옵니다. bash를 인터프리터로 지정하려면 쉘 스크립트 위에 다음 행을 추가하십시오.

#!/bin/bash>

이 라인을 셰뱅 라인이라고 합니다.

메모: 이것은 bash가 시스템에 설치된 경우에만 작동합니다.

비교 연산자

쉘 스크립팅에서 두 변수를 비교할 수 있습니다. 우리는 결정을 내리기 위해 이러한 비교를 수행합니다. 이 기사의 뒷부분에서 이를 수행하는 방법을 살펴보겠습니다. 하지만 그 전에, 여기에 몇 가지 비교 연산자 목록이 있습니다.

자바의 반환 유형

정수 비교

운영자 설명
-eq 동일하다
- 이다 같지 않다
-gt 보다 크다
-ge 다음보다 크거나 같음
-lt 보다 작다
-그만큼 다음보다 작거나 같음

문자열 비교

운영자 설명
== 동일하다
!= 같지 않다
< ASCII 알파벳 순서로 보다 작습니다.
> 다음보다 큼(ASCII 알파벳 순서)

[ ] 구문에 입력할 때 이스케이프해야 하기 때문에 앞에 를 추가합니다. 이제 이것들이 어디에 사용되는지 살펴보겠습니다.

조건문

조건문은 특정 조건이 충족되는 경우에만 코드 블록을 실행하는 데 사용됩니다. 쉘 스크립트는 조건문 사용을 지원합니다. 조건을 확인하기 위해 비교 연산자를 사용합니다. 몇 가지 조건문을 살펴보겠습니다.

If 문

조건을 확인하고 조건이 참이면 명령을 실행합니다.

통사론

if [ condition ] then #statements fi>

예를 살펴보겠습니다.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if 문

If-else 문

if-else 문에서는 조건이 충족되지 않을 경우 실행할 명령 집합을 지정할 수 있습니다.

통사론

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

예를 보자

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

.if-else 문

다른 조건문이 있습니다. 이에 대해 읽을 수 있습니다. 여기 .

메모: 확인할 조건을 지정하는 동안 [ 뒤 및 ] 앞에 공백을 입력하지 않으면 오류가 발생합니다.

루프

루프를 사용하면 특정 조건이 충족될 때까지 일련의 명령을 반복해서 실행할 수 있습니다. 몇 가지 루프를 살펴보겠습니다.

while 루프

조건이 true이면 지정된 명령 실행을 시작하고 조건이 false가 될 때까지 반복합니다.

통사론

while [ condition ] do #set of statements done>

예를 살펴보겠습니다.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

while 루프

변수에 할당할 때 expr 문을 ` ` 안에 넣습니다. expr 명령에 대한 내용은 여기에서 읽을 수 있습니다.

For 루프

for 루프에서 변수는 값 목록을 반복하고 더 이상 반복할 값이 없으면 종료됩니다.

통사론

for var in val1 val2 val3 do #statements done>

예를 살펴보겠습니다.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

for 루프

루프에 대해 자세히 읽을 수 있습니다. 여기 .

위치 인수

위치 인수는 스크립트를 실행하는 동안 쉘 스크립트에 전달하는 인수 또는 값입니다. 변수

쉘은 운영 체제의 인터페이스입니다. 사용자로부터 명령을 받아 이를 운영 체제에 해석합니다. 여러 명령을 함께 실행하려면 쉘 스크립트를 작성하면 됩니다. 백업 수행과 같은 작업을 정기적으로 수행해야 하는 경우 셸 스크립트는 매우 유용합니다. 해당 명령을 나열하고 단일 스크립트로 모두 실행할 수 있습니다. 쉘 스크립트를 작성하고 Linux에서 실행하는 방법을 살펴보겠습니다.

쉘 스크립트 생성

Linux 시스템에 로그인하고 터미널을 열고 쉘 스크립트를 저장할 폴더로 이동하십시오. 쉘 스크립트는 확장자 .sh로 끝납니다. 첫 번째 쉘 스크립트를 작성해 보겠습니다. 입력하세요

touch script.sh>

이제 이 스크립트 파일은 기본적으로 실행 가능하지 않으므로 이 파일에 실행 권한을 부여해야 합니다. 입력하세요

chmod +x script.sh>

이제 이 쉘 스크립트에 몇 가지 명령을 추가하겠습니다. 원하는 텍스트 편집기(명령줄 기반 또는 GUI 기반)를 사용하여 이 셸 스크립트를 열고 몇 가지 명령을 추가하세요. 우리는 나노를 사용할 것입니다. 입력하세요

nano script.sh>

이 쉘 스크립트를 테스트하려면 다음 명령을 추가하십시오.

echo This is my first shell script touch testfile ls echo End of my shell script>

변경 사항을 저장하고 다음을 입력하여 쉘 스크립트를 실행하십시오.

./script.sh>

위 단계의 스크린샷

보시다시피 지정된 모든 명령이 실행되었습니다.

쉘 스크립트의 주석

쉘 스크립트에서 #으로 시작하는 모든 라인은 주석으로 처리되며 실행 중에 쉘에 의해 무시됩니다. 단, 이 글의 뒷부분에서 보게 될 shebang 라인은 예외입니다. 예를 살펴보겠습니다. 다음 내용으로 쉘 스크립트가 생성됩니다.

# This is a comment echo Testing comments in shell script>

쉘 스크립트의 주석

보시다시피 댓글이 무시됩니다.

쉘 스크립트의 변수

예, 셸 스크립트는 변수 사용을 지원하므로 변수 선언 중에 변수 유형을 정의할 필요가 없습니다. 변수에는 두 가지 유형이 있습니다.

  • 시스템 정의 변수
  • 사용자 정의 변수.

환경 변수라고도 하는 시스템 정의 변수는 일반적으로 대문자로 표시됩니다. printenv 명령을 사용하면 현재 환경 변수를 모두 볼 수 있습니다. 사용자 정의 변수는 사용자가 설정하며 스크립트 실행 중에만 존재합니다. 간단히 이름을 입력하고 = 기호로 값을 할당하여 변수를 정의할 수 있으며, 변수 이름 앞에 $를 추가하여 변수에 액세스할 수 있습니다. 다음 예제 스크립트에서는 변수를 보여줍니다.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

쉘 스크립트의 변수

쉘 스크립트 인터프리터 정의

Linux에는 bourne shell(sh), Korn Shell(ksh), GNU Bourne-Again Shell(bash) 등 다양한 쉘을 사용할 수 있습니다. sh 쉘용으로 작성된 스크립트를 쉘 스크립트라고 하며 ksh 쉘과 bash 쉘 모두에서 해석될 수 있습니다. ksh와 Bash는 원래 sh 쉘의 개선된 버전이며 sh보다 더 많은 기능을 가지고 있습니다. Bash는 일반적으로 대부분의 Linux 배포판의 기본 셸이며 bash 셸용으로 특별히 작성된 스크립트를 bash 스크립트라고 합니다.

스크립트가 다른 쉘 터미널에서 실행되더라도 스크립트가 사용할 쉘을 지정할 수 있습니다. 이렇게 하려면 #! 스크립트 파일 상단에 선택한 쉘의 절대 경로가옵니다. bash를 인터프리터로 지정하려면 쉘 스크립트 위에 다음 행을 추가하십시오.

#!/bin/bash>

이 라인을 셰뱅 라인이라고 합니다.

메모: 이것은 bash가 시스템에 설치된 경우에만 작동합니다.

비교 연산자

쉘 스크립팅에서 두 변수를 비교할 수 있습니다. 우리는 결정을 내리기 위해 이러한 비교를 수행합니다. 이 기사의 뒷부분에서 이를 수행하는 방법을 살펴보겠습니다. 하지만 그 전에, 여기에 몇 가지 비교 연산자 목록이 있습니다.

정수 비교

운영자 설명
-eq 동일하다
- 이다 같지 않다
-gt 보다 크다
-ge 다음보다 크거나 같음
-lt 보다 작다
-그만큼 다음보다 작거나 같음

문자열 비교

운영자 설명
== 동일하다
!= 같지 않다
< ASCII 알파벳 순서로 보다 작습니다.
> 다음보다 큼(ASCII 알파벳 순서)

[ ] 구문에 입력할 때 이스케이프해야 하기 때문에 앞에 를 추가합니다. 이제 이것들이 어디에 사용되는지 살펴보겠습니다.

조건문

조건문은 특정 조건이 충족되는 경우에만 코드 블록을 실행하는 데 사용됩니다. 쉘 스크립트는 조건문 사용을 지원합니다. 조건을 확인하기 위해 비교 연산자를 사용합니다. 몇 가지 조건문을 살펴보겠습니다.

If 문

조건을 확인하고 조건이 참이면 명령을 실행합니다.

통사론

if [ condition ] then #statements fi>

예를 살펴보겠습니다.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if 문

If-else 문

if-else 문에서는 조건이 충족되지 않을 경우 실행할 명령 집합을 지정할 수 있습니다.

통사론

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

예를 보자

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

.if-else 문

다른 조건문이 있습니다. 이에 대해 읽을 수 있습니다. 여기 .

메모: 확인할 조건을 지정하는 동안 [ 뒤 및 ] 앞에 공백을 입력하지 않으면 오류가 발생합니다.

루프

루프를 사용하면 특정 조건이 충족될 때까지 일련의 명령을 반복해서 실행할 수 있습니다. 몇 가지 루프를 살펴보겠습니다.

while 루프

조건이 true이면 지정된 명령 실행을 시작하고 조건이 false가 될 때까지 반복합니다.

통사론

while [ condition ] do #set of statements done>

예를 살펴보겠습니다.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

while 루프

변수에 할당할 때 expr 문을 ` ` 안에 넣습니다. expr 명령에 대한 내용은 여기에서 읽을 수 있습니다.

For 루프

for 루프에서 변수는 값 목록을 반복하고 더 이상 반복할 값이 없으면 종료됩니다.

통사론

for var in val1 val2 val3 do #statements done>

예를 살펴보겠습니다.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

for 루프

루프에 대해 자세히 읽을 수 있습니다. 여기 .

위치 인수

위치 인수는 스크립트를 실행하는 동안 쉘 스크립트에 전달하는 인수 또는 값입니다. 변수 $0, $1, $2 ... $9에 의해 액세스됩니다. 그 외에도 ${10}, ${11} 등에서 참조됩니다. $#은 전달된 인수 수를 저장하고 $0은 스크립트 이름을 저장합니다. 이 모든 것을 이해하기 위해 예를 살펴보겠습니다.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'>

인수를 전달하려면 아래와 같이 터미널에서 스크립트 이름 뒤에 인수를 입력하면 됩니다.

위치 인수

명령 출력 저장

쉘 스크립트의 변수 내에 명령 출력을 저장할 수 있습니다. 그렇게 하는 방법에는 두 가지가 있습니다.

통사론

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

예를 살펴보겠습니다.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

명령 출력 저장

쉘 명령의 종료 코드

명령이 종료되고 제어권이 상위 프로세스로 반환될 때마다 0에서 255 사이의 종료 코드가 반환됩니다. 종료 코드 0은 명령이 성공했음을 의미하고 다른 종료 코드는 명령이 실패했음을 의미합니다. $?에 액세스하여 명령을 실행한 후 종료 코드를 볼 수 있습니다. 변하기 쉬운. 아래 예를 참조하세요.

쉘 명령의 종료 코드

쉘 스크립트의 종료 코드를 수동으로 설정할 수 있습니다. 이는 스크립트의 목적이 달성되었는지 여부를 전달하기 위해 조건문과 함께 사용할 수 있습니다.

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

쉘 명령의 종료 코드



, , ... 에 의해 액세스됩니다. 그 외에도 , 등에서 참조됩니다. $#은 전달된 인수 수를 저장하고

쉘은 운영 체제의 인터페이스입니다. 사용자로부터 명령을 받아 이를 운영 체제에 해석합니다. 여러 명령을 함께 실행하려면 쉘 스크립트를 작성하면 됩니다. 백업 수행과 같은 작업을 정기적으로 수행해야 하는 경우 셸 스크립트는 매우 유용합니다. 해당 명령을 나열하고 단일 스크립트로 모두 실행할 수 있습니다. 쉘 스크립트를 작성하고 Linux에서 실행하는 방법을 살펴보겠습니다.

쉘 스크립트 생성

Linux 시스템에 로그인하고 터미널을 열고 쉘 스크립트를 저장할 폴더로 이동하십시오. 쉘 스크립트는 확장자 .sh로 끝납니다. 첫 번째 쉘 스크립트를 작성해 보겠습니다. 입력하세요

touch script.sh>

이제 이 스크립트 파일은 기본적으로 실행 가능하지 않으므로 이 파일에 실행 권한을 부여해야 합니다. 입력하세요

chmod +x script.sh>

이제 이 쉘 스크립트에 몇 가지 명령을 추가하겠습니다. 원하는 텍스트 편집기(명령줄 기반 또는 GUI 기반)를 사용하여 이 셸 스크립트를 열고 몇 가지 명령을 추가하세요. 우리는 나노를 사용할 것입니다. 입력하세요

nano script.sh>

이 쉘 스크립트를 테스트하려면 다음 명령을 추가하십시오.

echo This is my first shell script touch testfile ls echo End of my shell script>

변경 사항을 저장하고 다음을 입력하여 쉘 스크립트를 실행하십시오.

./script.sh>

위 단계의 스크린샷

보시다시피 지정된 모든 명령이 실행되었습니다.

쉘 스크립트의 주석

쉘 스크립트에서 #으로 시작하는 모든 라인은 주석으로 처리되며 실행 중에 쉘에 의해 무시됩니다. 단, 이 글의 뒷부분에서 보게 될 shebang 라인은 예외입니다. 예를 살펴보겠습니다. 다음 내용으로 쉘 스크립트가 생성됩니다.

# This is a comment echo Testing comments in shell script>

쉘 스크립트의 주석

보시다시피 댓글이 무시됩니다.

쉘 스크립트의 변수

예, 셸 스크립트는 변수 사용을 지원하므로 변수 선언 중에 변수 유형을 정의할 필요가 없습니다. 변수에는 두 가지 유형이 있습니다.

  • 시스템 정의 변수
  • 사용자 정의 변수.

환경 변수라고도 하는 시스템 정의 변수는 일반적으로 대문자로 표시됩니다. printenv 명령을 사용하면 현재 환경 변수를 모두 볼 수 있습니다. 사용자 정의 변수는 사용자가 설정하며 스크립트 실행 중에만 존재합니다. 간단히 이름을 입력하고 = 기호로 값을 할당하여 변수를 정의할 수 있으며, 변수 이름 앞에 $를 추가하여 변수에 액세스할 수 있습니다. 다음 예제 스크립트에서는 변수를 보여줍니다.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

쉘 스크립트의 변수

쉘 스크립트 인터프리터 정의

Linux에는 bourne shell(sh), Korn Shell(ksh), GNU Bourne-Again Shell(bash) 등 다양한 쉘을 사용할 수 있습니다. sh 쉘용으로 작성된 스크립트를 쉘 스크립트라고 하며 ksh 쉘과 bash 쉘 모두에서 해석될 수 있습니다. ksh와 Bash는 원래 sh 쉘의 개선된 버전이며 sh보다 더 많은 기능을 가지고 있습니다. Bash는 일반적으로 대부분의 Linux 배포판의 기본 셸이며 bash 셸용으로 특별히 작성된 스크립트를 bash 스크립트라고 합니다.

스크립트가 다른 쉘 터미널에서 실행되더라도 스크립트가 사용할 쉘을 지정할 수 있습니다. 이렇게 하려면 #! 스크립트 파일 상단에 선택한 쉘의 절대 경로가옵니다. bash를 인터프리터로 지정하려면 쉘 스크립트 위에 다음 행을 추가하십시오.

#!/bin/bash>

이 라인을 셰뱅 라인이라고 합니다.

메모: 이것은 bash가 시스템에 설치된 경우에만 작동합니다.

비교 연산자

쉘 스크립팅에서 두 변수를 비교할 수 있습니다. 우리는 결정을 내리기 위해 이러한 비교를 수행합니다. 이 기사의 뒷부분에서 이를 수행하는 방법을 살펴보겠습니다. 하지만 그 전에, 여기에 몇 가지 비교 연산자 목록이 있습니다.

정수 비교

운영자 설명
-eq 동일하다
- 이다 같지 않다
-gt 보다 크다
-ge 다음보다 크거나 같음
-lt 보다 작다
-그만큼 다음보다 작거나 같음

문자열 비교

운영자 설명
== 동일하다
!= 같지 않다
< ASCII 알파벳 순서로 보다 작습니다.
> 다음보다 큼(ASCII 알파벳 순서)

[ ] 구문에 입력할 때 이스케이프해야 하기 때문에 앞에 를 추가합니다. 이제 이것들이 어디에 사용되는지 살펴보겠습니다.

조건문

조건문은 특정 조건이 충족되는 경우에만 코드 블록을 실행하는 데 사용됩니다. 쉘 스크립트는 조건문 사용을 지원합니다. 조건을 확인하기 위해 비교 연산자를 사용합니다. 몇 가지 조건문을 살펴보겠습니다.

If 문

조건을 확인하고 조건이 참이면 명령을 실행합니다.

통사론

if [ condition ] then #statements fi>

예를 살펴보겠습니다.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if 문

If-else 문

if-else 문에서는 조건이 충족되지 않을 경우 실행할 명령 집합을 지정할 수 있습니다.

통사론

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

예를 보자

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

.if-else 문

다른 조건문이 있습니다. 이에 대해 읽을 수 있습니다. 여기 .

메모: 확인할 조건을 지정하는 동안 [ 뒤 및 ] 앞에 공백을 입력하지 않으면 오류가 발생합니다.

루프

루프를 사용하면 특정 조건이 충족될 때까지 일련의 명령을 반복해서 실행할 수 있습니다. 몇 가지 루프를 살펴보겠습니다.

while 루프

조건이 true이면 지정된 명령 실행을 시작하고 조건이 false가 될 때까지 반복합니다.

통사론

while [ condition ] do #set of statements done>

예를 살펴보겠습니다.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

while 루프

변수에 할당할 때 expr 문을 ` ` 안에 넣습니다. expr 명령에 대한 내용은 여기에서 읽을 수 있습니다.

For 루프

for 루프에서 변수는 값 목록을 반복하고 더 이상 반복할 값이 없으면 종료됩니다.

통사론

for var in val1 val2 val3 do #statements done>

예를 살펴보겠습니다.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

for 루프

루프에 대해 자세히 읽을 수 있습니다. 여기 .

위치 인수

위치 인수는 스크립트를 실행하는 동안 쉘 스크립트에 전달하는 인수 또는 값입니다. 변수 $0, $1, $2 ... $9에 의해 액세스됩니다. 그 외에도 ${10}, ${11} 등에서 참조됩니다. $#은 전달된 인수 수를 저장하고 $0은 스크립트 이름을 저장합니다. 이 모든 것을 이해하기 위해 예를 살펴보겠습니다.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'>

인수를 전달하려면 아래와 같이 터미널에서 스크립트 이름 뒤에 인수를 입력하면 됩니다.

위치 인수

명령 출력 저장

쉘 스크립트의 변수 내에 명령 출력을 저장할 수 있습니다. 그렇게 하는 방법에는 두 가지가 있습니다.

통사론

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

예를 살펴보겠습니다.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

명령 출력 저장

쉘 명령의 종료 코드

명령이 종료되고 제어권이 상위 프로세스로 반환될 때마다 0에서 255 사이의 종료 코드가 반환됩니다. 종료 코드 0은 명령이 성공했음을 의미하고 다른 종료 코드는 명령이 실패했음을 의미합니다. $?에 액세스하여 명령을 실행한 후 종료 코드를 볼 수 있습니다. 변하기 쉬운. 아래 예를 참조하세요.

쉘 명령의 종료 코드

쉘 스크립트의 종료 코드를 수동으로 설정할 수 있습니다. 이는 스크립트의 목적이 달성되었는지 여부를 전달하기 위해 조건문과 함께 사용할 수 있습니다.

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

쉘 명령의 종료 코드



은 스크립트 이름을 저장합니다. 이 모든 것을 이해하기 위해 예를 살펴보겠습니다.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is 

쉘은 운영 체제의 인터페이스입니다. 사용자로부터 명령을 받아 이를 운영 체제에 해석합니다. 여러 명령을 함께 실행하려면 쉘 스크립트를 작성하면 됩니다. 백업 수행과 같은 작업을 정기적으로 수행해야 하는 경우 셸 스크립트는 매우 유용합니다. 해당 명령을 나열하고 단일 스크립트로 모두 실행할 수 있습니다. 쉘 스크립트를 작성하고 Linux에서 실행하는 방법을 살펴보겠습니다.

쉘 스크립트 생성

Linux 시스템에 로그인하고 터미널을 열고 쉘 스크립트를 저장할 폴더로 이동하십시오. 쉘 스크립트는 확장자 .sh로 끝납니다. 첫 번째 쉘 스크립트를 작성해 보겠습니다. 입력하세요

touch script.sh>

이제 이 스크립트 파일은 기본적으로 실행 가능하지 않으므로 이 파일에 실행 권한을 부여해야 합니다. 입력하세요

chmod +x script.sh>

이제 이 쉘 스크립트에 몇 가지 명령을 추가하겠습니다. 원하는 텍스트 편집기(명령줄 기반 또는 GUI 기반)를 사용하여 이 셸 스크립트를 열고 몇 가지 명령을 추가하세요. 우리는 나노를 사용할 것입니다. 입력하세요

nano script.sh>

이 쉘 스크립트를 테스트하려면 다음 명령을 추가하십시오.

echo This is my first shell script touch testfile ls echo End of my shell script>

변경 사항을 저장하고 다음을 입력하여 쉘 스크립트를 실행하십시오.

./script.sh>

위 단계의 스크린샷

보시다시피 지정된 모든 명령이 실행되었습니다.

쉘 스크립트의 주석

쉘 스크립트에서 #으로 시작하는 모든 라인은 주석으로 처리되며 실행 중에 쉘에 의해 무시됩니다. 단, 이 글의 뒷부분에서 보게 될 shebang 라인은 예외입니다. 예를 살펴보겠습니다. 다음 내용으로 쉘 스크립트가 생성됩니다.

# This is a comment echo Testing comments in shell script>

쉘 스크립트의 주석

보시다시피 댓글이 무시됩니다.

쉘 스크립트의 변수

예, 셸 스크립트는 변수 사용을 지원하므로 변수 선언 중에 변수 유형을 정의할 필요가 없습니다. 변수에는 두 가지 유형이 있습니다.

  • 시스템 정의 변수
  • 사용자 정의 변수.

환경 변수라고도 하는 시스템 정의 변수는 일반적으로 대문자로 표시됩니다. printenv 명령을 사용하면 현재 환경 변수를 모두 볼 수 있습니다. 사용자 정의 변수는 사용자가 설정하며 스크립트 실행 중에만 존재합니다. 간단히 이름을 입력하고 = 기호로 값을 할당하여 변수를 정의할 수 있으며, 변수 이름 앞에 $를 추가하여 변수에 액세스할 수 있습니다. 다음 예제 스크립트에서는 변수를 보여줍니다.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

쉘 스크립트의 변수

쉘 스크립트 인터프리터 정의

Linux에는 bourne shell(sh), Korn Shell(ksh), GNU Bourne-Again Shell(bash) 등 다양한 쉘을 사용할 수 있습니다. sh 쉘용으로 작성된 스크립트를 쉘 스크립트라고 하며 ksh 쉘과 bash 쉘 모두에서 해석될 수 있습니다. ksh와 Bash는 원래 sh 쉘의 개선된 버전이며 sh보다 더 많은 기능을 가지고 있습니다. Bash는 일반적으로 대부분의 Linux 배포판의 기본 셸이며 bash 셸용으로 특별히 작성된 스크립트를 bash 스크립트라고 합니다.

스크립트가 다른 쉘 터미널에서 실행되더라도 스크립트가 사용할 쉘을 지정할 수 있습니다. 이렇게 하려면 #! 스크립트 파일 상단에 선택한 쉘의 절대 경로가옵니다. bash를 인터프리터로 지정하려면 쉘 스크립트 위에 다음 행을 추가하십시오.

#!/bin/bash>

이 라인을 셰뱅 라인이라고 합니다.

메모: 이것은 bash가 시스템에 설치된 경우에만 작동합니다.

비교 연산자

쉘 스크립팅에서 두 변수를 비교할 수 있습니다. 우리는 결정을 내리기 위해 이러한 비교를 수행합니다. 이 기사의 뒷부분에서 이를 수행하는 방법을 살펴보겠습니다. 하지만 그 전에, 여기에 몇 가지 비교 연산자 목록이 있습니다.

정수 비교

운영자 설명
-eq 동일하다
- 이다 같지 않다
-gt 보다 크다
-ge 다음보다 크거나 같음
-lt 보다 작다
-그만큼 다음보다 작거나 같음

문자열 비교

운영자 설명
== 동일하다
!= 같지 않다
< ASCII 알파벳 순서로 보다 작습니다.
> 다음보다 큼(ASCII 알파벳 순서)

[ ] 구문에 입력할 때 이스케이프해야 하기 때문에 앞에 를 추가합니다. 이제 이것들이 어디에 사용되는지 살펴보겠습니다.

조건문

조건문은 특정 조건이 충족되는 경우에만 코드 블록을 실행하는 데 사용됩니다. 쉘 스크립트는 조건문 사용을 지원합니다. 조건을 확인하기 위해 비교 연산자를 사용합니다. 몇 가지 조건문을 살펴보겠습니다.

If 문

조건을 확인하고 조건이 참이면 명령을 실행합니다.

통사론

if [ condition ] then #statements fi>

예를 살펴보겠습니다.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if 문

If-else 문

if-else 문에서는 조건이 충족되지 않을 경우 실행할 명령 집합을 지정할 수 있습니다.

통사론

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

예를 보자

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

.if-else 문

다른 조건문이 있습니다. 이에 대해 읽을 수 있습니다. 여기 .

메모: 확인할 조건을 지정하는 동안 [ 뒤 및 ] 앞에 공백을 입력하지 않으면 오류가 발생합니다.

루프

루프를 사용하면 특정 조건이 충족될 때까지 일련의 명령을 반복해서 실행할 수 있습니다. 몇 가지 루프를 살펴보겠습니다.

while 루프

조건이 true이면 지정된 명령 실행을 시작하고 조건이 false가 될 때까지 반복합니다.

통사론

while [ condition ] do #set of statements done>

예를 살펴보겠습니다.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

while 루프

변수에 할당할 때 expr 문을 ` ` 안에 넣습니다. expr 명령에 대한 내용은 여기에서 읽을 수 있습니다.

For 루프

for 루프에서 변수는 값 목록을 반복하고 더 이상 반복할 값이 없으면 종료됩니다.

통사론

for var in val1 val2 val3 do #statements done>

예를 살펴보겠습니다.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

for 루프

루프에 대해 자세히 읽을 수 있습니다. 여기 .

위치 인수

위치 인수는 스크립트를 실행하는 동안 쉘 스크립트에 전달하는 인수 또는 값입니다. 변수 $0, $1, $2 ... $9에 의해 액세스됩니다. 그 외에도 ${10}, ${11} 등에서 참조됩니다. $#은 전달된 인수 수를 저장하고 $0은 스크립트 이름을 저장합니다. 이 모든 것을 이해하기 위해 예를 살펴보겠습니다.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'>

인수를 전달하려면 아래와 같이 터미널에서 스크립트 이름 뒤에 인수를 입력하면 됩니다.

위치 인수

명령 출력 저장

쉘 스크립트의 변수 내에 명령 출력을 저장할 수 있습니다. 그렇게 하는 방법에는 두 가지가 있습니다.

통사론

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

예를 살펴보겠습니다.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

명령 출력 저장

쉘 명령의 종료 코드

명령이 종료되고 제어권이 상위 프로세스로 반환될 때마다 0에서 255 사이의 종료 코드가 반환됩니다. 종료 코드 0은 명령이 성공했음을 의미하고 다른 종료 코드는 명령이 실패했음을 의미합니다. $?에 액세스하여 명령을 실행한 후 종료 코드를 볼 수 있습니다. 변하기 쉬운. 아래 예를 참조하세요.

쉘 명령의 종료 코드

쉘 스크립트의 종료 코드를 수동으로 설정할 수 있습니다. 이는 스크립트의 목적이 달성되었는지 여부를 전달하기 위해 조건문과 함께 사용할 수 있습니다.

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

쉘 명령의 종료 코드



' echo 'First argument is ' echo 'Second argument is '>

인수를 전달하려면 아래와 같이 터미널에서 스크립트 이름 뒤에 인수를 입력하면 됩니다.

위치 인수

문자열을 int로 자바

명령 출력 저장

쉘 스크립트의 변수 내에 명령 출력을 저장할 수 있습니다. 그렇게 하는 방법에는 두 가지가 있습니다.

통사론

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

예를 살펴보겠습니다.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

명령 출력 저장

쉘 명령의 종료 코드

명령이 종료되고 제어권이 상위 프로세스로 반환될 때마다 0에서 255 사이의 종료 코드가 반환됩니다. 종료 코드 0은 명령이 성공했음을 의미하고 다른 종료 코드는 명령이 실패했음을 의미합니다. $?에 액세스하여 명령을 실행한 후 종료 코드를 볼 수 있습니다. 변하기 쉬운. 아래 예를 참조하세요.

쉘 명령의 종료 코드

쉘 스크립트의 종료 코드를 수동으로 설정할 수 있습니다. 이는 스크립트의 목적이 달성되었는지 여부를 전달하기 위해 조건문과 함께 사용할 수 있습니다.

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

쉘 명령의 종료 코드