초보자를 위한 Bash 스크립팅 튜토리얼

Bash Scripting Tutorial



Linux의 기본 명령 언어는 Bash 스크립트입니다. 우리는 많은 목적을 위해 매일 Linux에서 많은 명령을 실행해야 합니다. 이러한 일일 작업은 bash 스크립트를 사용하여 자동화할 수 있습니다. 모든 사용자는 이 스크립팅 언어를 매우 쉽고 빠르게 배울 수 있습니다. bash 프로그래밍이 처음이라면 이 튜토리얼이 적합합니다.

내용물:

  1. 코멘트
  2. 에코 명령
  3. 변수
  4. 조건문
  5. 루프
  6. 기능
  7. 스크립트에서 프로그램 호출
  8. 메뉴 만들기
  9. 명령줄 처리
  10. 산수
  11. 문자열 조작
  12. 스크립트에서 반환 코드를 반환하고 다른 스크립트에서 잡기
  13. 파일 읽기 및 쓰기
  14. 파이프

코멘트

코드에 주석을 추가하는 것은 모든 프로그래밍 언어의 필수적인 부분입니다. 주석은 실행 시 스크립트로 구문 분석되지 않습니다. 코드가 잘 주석 처리되어 있으면 독자는 모든 코드를 올바르게 이해할 수 있습니다. bash 스크립트에서 다양한 방법으로 주석을 추가할 수 있습니다. bash 스크립트에서 한 줄 및 여러 줄 주석을 추가하는 방법은 이 부분에 나와 있습니다. bash 주석의 사용법을 알기 위해 다음 스크립트로 bash 파일을 생성합니다. 여기서 '#' 기호는 한 줄 주석을 추가할 때 사용하고 작은따옴표(')는 ':'를 사용하여 여러 줄 주석을 추가할 때 사용합니다.







bash_comment.sh



#!/bin/bash
#숫자를입력으로받아들여라
던졌다 '번호를 입력하세요'
읽다에게
:'
입력번호가 맞는지 확인
10보다 작거나 10보다 크거나 10과 같음
'

만약 [[ $ -그 10 ]]
그 다음에
던졌다 '숫자가 10보다 작습니다'
엘리프 [[ $ -gt 10 ]]
그 다음에
던졌다 '숫자가 10보다 큽니다'
또 다른
던졌다 '숫자는 10과 같다'
~이다

산출:

스크립트를 실행합니다.

$세게 때리다bash_comment.sh

여기에서 스크립트는 입력 값 3, 10, 90으로 3번 실행됩니다. 다음과 같은 출력이 나타납니다.

bash 주석에 대해 더 알고 싶다면 다음을 확인할 수 있습니다. 이 튜토리얼 .

맨 위로 이동

에코 명령

`echo` 명령은 bash에서 터미널에서 출력을 인쇄하는 데 사용됩니다. bash의 echo 명령과 함께 다양한 옵션을 사용하여 다양한 방식으로 출력을 인쇄할 수 있습니다. `echo` 명령의 두 가지 간단한 사용법을 알기 위해 다음 스크립트로 bash 파일을 만듭니다. 여기서 첫 번째 `echo` 명령은 새 행이 있는 간단한 텍스트 데이터를 인쇄하고 두 번째 echo 명령은 개행 없이 간단한 텍스트를 인쇄합니다.

echo_test.sh

#!/bin/bash
# 첫 번째 텍스트를 인쇄합니다.
던졌다 '새 줄로 텍스트 인쇄'
#두 번째 텍스트 인쇄
던졌다 -N '새 줄 없이 텍스트 인쇄'

산출:

스크립트를 실행합니다.

$세게 때리다echo_test.sh

위의 명령을 실행하면 다음과 같은 출력이 나타납니다.

bash에는 `echo` 명령의 다른 많은 용도가 있습니다. 이 튜토리얼에서 `echo` 명령에 대해 자세히 알아볼 수 있습니다.

맨 위로 이동

변수

변수 선언은 모든 프로그래밍 언어의 필수 부분입니다. Bash 변수는 다양한 방식으로 선언할 수 있습니다. 변수에 값이 할당되면 변수 시작 부분에 기호가 사용되지 않습니다. 변수의 값을 읽을 때 변수명과 함께 '$' 기호를 사용한다. 변수는 터미널에서 사용하거나 모든 bash 스크립트에서 사용할 수 있습니다.

다음 명령은 다음과 같은 문자열 변수를 선언합니다. 미스트 특정 값으로 다음 터미널에서 변수 값을 인쇄합니다.

$미스트='나는 배쉬 프로그래밍을 좋아한다'
$던졌다 $mystr

산출:

다음 스크립트를 사용하여 bash 파일을 만듭니다. 여기에 두 개의 변수가 선언됩니다. 이것들은 $ 그리고 $ b . 에 저장되어 있는 입력값의 경우 $ 와 동등하다 $ b 그런 다음 메시지, 숫자가 같음 그렇지 않으면 인쇄됩니다 숫자가 같지 않습니다. 인쇄됩니다.

var.sh

#!/bin/bash
던졌다 '번호를 입력하세요'
읽다에게
NS=100
만약 [[ $ -eq $ b ]]
그 다음에
던졌다 '숫자는 같다'
또 다른
던졌다 '숫자는 같지 않다'
~이다

산출:

스크립트를 실행합니다.

$세게 때리다var.sh

위의 명령은 값 56과 100으로 두 번 실행됩니다. 다음 출력이 나타납니다.

bash 변수에 대해 더 알고 싶다면 다음을 확인할 수 있습니다. 이 튜토리얼 .

맨 위로 이동

조건문

다른 프로그래밍 언어와 마찬가지로 bash에서 조건문을 사용할 수 있습니다. ' 그렇다면 ' 그리고 ' 사례 ' 문은 주로 모든 프로그래밍 언어에서 조건문을 구현하는 데 사용됩니다. 다음을 사용하여 조건문 사용 '만약' 문이 이 튜토리얼의 이 섹션에 나와 있습니다. 조건문이 사용되는 다음 스크립트를 사용하여 bash 파일을 만듭니다. 여기에서 사용자로부터 두 개의 값을 입력으로 가져와 변수에 저장합니다. $코드 , 그리고 $나이 . 'if' 문은 값을 확인하는 데 사용됩니다. $나이 보다 크거나 같음 18 그리고 의 가치 $코드 ~이다 1100 . 두 조건이 모두 참이면 메시지, 당신은 영화를 볼 자격이 있습니다 그렇지 않으면 인쇄됩니다 당신은 영화를 볼 자격이 없습니다 인쇄됩니다.

cond.sh

#!/bin/bash

던졌다 '코드를 입력하세요'
읽다암호
던졌다 '나이를 입력하세요'
읽다나이

만약 [[ $나이 -주다 18 && $코드 -eq '1100' ]]
그 다음에
던졌다 '당신은 영화를 볼 자격이 있습니다'
또 다른
던졌다 '당신은 영화를 볼 자격이 없습니다'
~이다

산출:

스크립트를 실행합니다.

$세게 때리다cond.sh

다른 입력 값을 취한 후 다음 출력이 나타납니다. 1100은 코드로 제공되고 5는 첫 번째 실행의 연령으로 제공되며 조건이 이러한 값에 대해 false를 반환하는 경우입니다. 1100은 코드로 제공되고 45는 if 조건에 대해 true를 반환하는 두 번째 실행에 대한 연령으로 제공됩니다.

bash 조건문에 대해 더 알고 싶다면 이 튜토리얼을 확인하세요.

맨 위로 이동

루프

스크립트의 일부가 여러 번 실행되어야 하는 경우 루프를 사용하여 작업을 수행합니다. Bash는 다른 언어와 마찬가지로 세 가지 유형의 루프 선언을 지원합니다. for, while 및 until 루프입니다. 프로그래밍 요구 사항에 따라 스크립트에서 특정 루프가 사용됩니다. 이 세 가지 유형의 루프 사용은 간단한 예제를 사용하여 이 섹션에 나와 있습니다.

for 루프 사용

` 위해` 루프는 반복에 사용됩니다. '를 위해' 루프는 주로 데이터 또는 배열의 목록을 반복하는 데 사용됩니다. 여기서는 요일 이름 목록을 사용하고 for 루프를 사용하여 각 요일 이름을 반복합니다. '만약' 문은 요일 이름을 기반으로 특정 메시지를 인쇄하는 데 사용됩니다.

for.sh

# 루프의 각 반복에서 요일 이름을 읽습니다.
~을위한~에월요일 화요일 수요일 목요일 금요일 토요일 일요일
~하다

#요일 이름이 월요일 또는 목요일인지 확인하십시오.
만약 [[ $일=='월요일' || $일=='목요일' ]]
그 다음에
던졌다 '에 회의$일오전 9시 30분'

#요일 이름이 화요일 또는 수요일 또는 금요일인지 확인하십시오.
엘리프 [[ $일=='화요일' || $일=='수요일' || $일=='금요일' ]]
그 다음에
던졌다 '에 대한 훈련$일오전 11시'
또 다른

#다른 날은 'Holiday'로 인쇄
던졌다 '$일홀리데이'
~이다
완료

산출:

스크립트를 실행합니다.

$세게 때리다for.sh

스크립트를 실행하면 다음 출력이 나타납니다.

bash for 루프에 대해 더 알고 싶다면 이 튜토리얼을 확인하세요.

while 루프 사용

` 동안 ` 루프는 반복에 사용됩니다. 이 스크립트는 1에서 20까지 짝수이고 5로 나눌 수 있는 숫자를 인쇄합니다. 여기에서, $카운터 변수는 루프의 반복을 제어하는 ​​데 사용되며 이 변수의 값은 각 반복에서 1씩 증가합니다. 언제 '만약' 조건은 true를 반환하고 다음 값을 인쇄합니다. $카운터 .

#!/bin/bash

#메시지 인쇄
던졌다 '짝수이고 5로 나누어 떨어지는 수를 출력하시오'

#카운터 초기화
카운터=1

#$counter 값이 20보다 작거나 같을 때까지 루프를 반복합니다.
동안 [ $카운터 -NS 스물 ]
~하다

#$counter가 2와 5로 나누어 떨어지는지 확인
만약 [[ $카운터%2-eq 0 && $카운터%5-eq 0 ]]
그 다음에
# 개행 없이 $counter 인쇄
던졌다 '$카운터'
~이다

#$counter를 1씩 증가
((카운터++))
완료
던졌다 '완료'

산출:

$세게 때리다동안.sh

1-20 사이의 숫자는 짝수이고 5로 나눌 수 있습니다. 스크립트를 실행하면 다음 출력이 나타납니다.

bash `의 사용법을 더 알고 싶다면 ` 동안` 루프 다음 ​​확인할 수 있습니다 이 튜토리얼 .

루프까지 사용

` 까지` 루프는 반복에 사용됩니다. 이 스크립트는 0에서 20까지의 모든 홀수를 인쇄합니다. $n 변수는 이 스크립트에서 루프를 반복하는 데 사용됩니다.

까지.sh

#!/bin/bash

#변수 초기화, n
N=스물

#$n의 값이 0보다 클 때까지 루프를 반복합니다.
~까지 [ $n -그 0 ]
~하다

#n의 값이 홀수인지 확인
만약 [[ $n%2-gt 0 ]]
그 다음에
던졌다 $n
~이다

#n의 값을 1만큼 증가
((N=$n-1))
완료

산출:

스크립트를 실행합니다.

$세게 때리다까지.sh

스크립트는 20에서 1까지의 모든 짝수를 인쇄합니다. 스크립트를 실행하면 다음 출력이 나타납니다.

맨 위로 이동

기능

코드 블록이 스크립트에서 여러 번 실행되어야 하는 경우 함수를 사용하여 작업을 수행합니다. 동일한 스크립트를 여러 번 추가하는 것보다 함수에 정의된 스크립트를 여러 번 실행해야 하는 경우에만 이름으로 함수를 호출해야 합니다. 시작 및 끝 첫 번째 대괄호는 함수 이름과 함께 사용되어 bash 스크립트에서 함수를 선언합니다. 함수는 bash에서 함수 이름만으로 호출할 수 있습니다. Bash는 다른 표준 프로그래밍 언어처럼 함수 인수를 지원하지 않습니다. 그러나 이 섹션에 표시된 다른 방식으로 값을 bash 함수에 전달할 수 있습니다. return 문을 사용하거나 return 문을 사용하지 않고 함수에서 값을 반환할 수 있습니다.

bash 스크립트에서 함수를 선언하고 호출하는 방법을 알기 위해 다음 스크립트를 사용하여 bash 파일을 만듭니다. 스크립트에는 세 가지 함수가 선언되어 있습니다. 첫 번째 함수는 간단한 메시지를 인쇄하도록 선언되었습니다. 초보자를 위한 Bash 프로그래밍 . 두 번째 함수는 변수에 문자열 값을 할당하도록 선언됩니다. $return_str 인쇄할 것입니다. LinuxHint로 bash 프로그래밍 배우기 함수를 호출한 후. 세 번째 함수는 함수 호출 시 제공될 원 반경으로 인수 값을 읽도록 선언됩니다. 여기, 현지의 인수 값을 읽는 데 사용됩니다. 이 함수는 공식을 사용하여 반지름 값을 기반으로 원의 면적을 계산합니다. πr2 계산된 면적 값을 인쇄합니다.

func.sh

#!/bin/bash

#간단한 함수 선언
기능print_message()
{
던졌다 '초보자를 위한 Bash 프로그래밍'
}

#문자열 값을 반환하는 함수 선언
기능ret_strdata()
{
# 문자열 값으로 변수 초기화
return_str='LinuxHint로 bash 프로그래밍 배우기'
}

# 인수 값을 읽는 함수 선언
기능계산 영역()

#전달된 인수 값 읽기
현지의 반지름=$ 1
지역= $(던졌다 $반경*$반경*3.14

#간단한 메시지를 출력하는 함수 호출
print_message

#변수에 문자열 값을 할당하는 함수 호출
ret_strdata

#변수의 값을 출력
던졌다 $return_str

#반경 값 읽기
던졌다 '반경 값 입력'
읽다일하다

#반지름 값으로 함수 호출
계산 영역$ 라드

산출:

스크립트를 실행합니다.

$세게 때리다func.sh

스크립트를 실행하면 다음 출력이 나타납니다. 처음 두 줄은 함수를 호출하여 인쇄합니다. print_message() 그리고 ret_strdata() . 마지막 줄은 함수를 호출하여 인쇄합니다. 계산 영역 ()는 입력 반경 값을 사용합니다.

bash 함수에서 문자열을 반환하는 방법에 대해 알고 싶다면 다음을 수행할 수 있습니다. 이 튜토리얼 NS.

맨 위로 이동

스크립트에서 프로그램 호출

많은 유형의 명령을 사용하여 다음과 같은 bash 스크립트에서 다른 프로그램을 호출할 수 있습니다. 소스, 배쉬, 평가, 간부 , 등. 세 개의 bash 파일이 있다고 가정합니다. add.sh , 빼기.sh, 곱하기.sh 및 나누기.sh 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하기 위해 만들어졌습니다. 여기, 빼기.sh 그리고 디비전.sh 명령줄 인수를 읽습니다. 이 4개 파일의 스크립트는 모두 아래에 나와 있습니다.

add.sh

#!/bin/bash
에게=60
NS=40
((결과=$+$ b))
던졌다 '의 추가$+$ b=$결과'

빼기.sh

#!/bin/bash
에게=$ 1
NS=$ 2
((결과=$-$ b))
던졌다 '의 빼기$-$ b=$결과'

곱하기.sh

#!/bin/bash
((결과=$ 1*$ 2))
던졌다 '$1과 $2의 곱은$결과'

나누기.sh

#!/bin/bash
에게=$ 1
NS=2
((결과=$/$ b))
던졌다 '분할$~에 의해$ b~이다$결과'

라는 이름의 bash 파일을 생성합니다. callpro.sh 다음 스크립트를 사용하여 source, bash, eval 및 exec 명령을 사용하여 언급된 bash 파일을 호출합니다. 다음 스크립트를 실행하기 전에 위의 4개 파일에 대한 실행 권한을 설정해야 합니다. `source` 명령은 호출하는 데 사용됩니다. add.sh 파일. 'bash' 명령은subtract.sh 파일을 실행하는 데 사용됩니다. 'eval' 명령어는 multiple.sh 파일을 실행하는 데 사용됩니다. 두 개의 입력 값이 `eval` 명령에 대한 명령줄 인수로 전송됩니다. 마지막 명령은 절대 경로에서만 작동하는 exec 명령입니다. 이를 위해 split.sh 파일의 전체 경로 이름이 스크립트에 제공됩니다.

callpro.sh

#!/bin/bash
스크립트1='추가.시'
스크립트2='빼기.sh'
스크립트3=곱하기.sh'
스크립트4='/home/fahmida/code/divide.sh'

원천 '$script1'

세게 때리다 $스크립트2 오십 스물

던졌다 '값 입력'
읽다에게
던졌다 'b 값 입력'
읽다NS
평가 세게 때리다 $script3 $ $ b
간부 $스크립트4 30

산출:

스크립트를 실행합니다.

$세게 때리다callpro.sh

스크립트를 실행하면 다음 출력이 나타납니다.

맨 위로 이동

메뉴 만들기

bash에는 다음과 같은 간단한 메뉴를 만드는 유용한 명령이 있습니다. '선택' 명령. 이 명령을 사용하여 다양한 유형의 메뉴를 만들 수 있습니다. 특정 데이터 목록은 이 명령으로 메뉴를 만드는 데 사용됩니다. 다음 코드를 사용하여 bash 파일을 작성하여 사용을 확인하십시오. '선택' 메뉴를 만드는 명령어. 이 예에서 5개 항목의 목록이 메뉴로 인쇄되고 사용자에게 목록에서 언어를 선택하라는 메시지가 표시됩니다. 선택한 값은 변수에 저장되며, $언어 다른 문자열과 연결하여 나중에 인쇄됩니다. 스크립트는 사용자가 키를 누를 때까지 계속해서 언어 선택을 요청합니다. 6 스크립트에서 종료합니다.

메뉴.sh

#!/bin/bash

#사용자를 위한 메시지 인쇄
던졌다 '좋아하는 언어 선택'

# 메뉴 항목의 목록 정의
선택하다언어~에# 자바 PHP 파이썬 배쉬 종료
~하다
#선택한 값을 출력
만약 [[ $언어=='출구' ]]
그 다음에
출구 0
또 다른
던졌다 '선택한 언어는$언어'
~이다
완료

산출:

스크립트를 실행합니다.

$세게 때리다메뉴.sh

다음 출력에 따르면 사용자는 처음으로 PHP를 인쇄할 때 3을 누르고 스크립트에서 종료된 두 번째로 6을 눌렀습니다.

`select`를 사용한 bash 메뉴 생성에 대해 더 알고 싶다면 이 튜토리얼을 방문하세요.

맨 위로 이동

명령줄 처리

때로는 명령줄에서 스크립트를 실행할 때 입력 값을 제공해야 합니다. 이 작업은 bash에서 두 가지 방법으로 수행할 수 있습니다. 한 가지 방법은 인수 변수를 사용하는 것이고 다른 방법은 getopts 함수를 사용하는 것입니다. 이 섹션에서는 인수 변수를 사용하여 터미널에서 명령줄 입력 데이터를 읽는 방법을 보여줍니다.

다음 스크립트를 사용하여 bash 파일을 생성하여 명령줄 인수 값 읽기 사용을 확인합니다. 이 스크립트는 $operand1, $operand2 및 $operator 변수에 저장될 세 개의 명령줄 인수를 읽습니다. 스크립트를 제대로 실행하려면 첫 번째와 세 번째 인수 값은 숫자여야 하고 두 번째 인수 값은 네 가지 산술 연산자('+', '-', '/', 'x') 중 하나여야 합니다. 만약 명령문은 $operator의 값을 확인하고 연산자를 기반으로 작업을 수행하고 값을 인쇄합니다.

cl1.sh

#!/bin/bash

#인수 변수 인쇄
던졌다 '인수 값: $1 $2 $3'

# 인수 값 저장
피연산자1=$ 1
피연산자2=$3
운영자=$ 2

# 두 번째 명령 인수 값을 확인하여 산술 연산을 수행합니다.
만약 [[ $연산자=='+' ]]
그 다음에
((결과=$ 피연산자1+$ 피연산자2))
엘리프 [[ $연산자=='-' ]]
그 다음에
((결과=$ 피연산자1-$ 피연산자2))
엘리프 [[ $연산자=='NS' ]]
그 다음에
((결과=$ 피연산자1*$ 피연산자2))
엘리프 [[ $연산자=='/' ]]
그 다음에

((결과=$ 피연산자1/$ 피연산자2))
~이다

# 결과를 출력
던졌다 -그리고 '결과는 =$결과'

산출:

스크립트를 실행합니다.

$세게 때리다cl1.sh

스크립트는 4가지 유형의 산술 연산자에 대해 4번 실행됩니다. 인수 값에 대해 다음 출력이 표시됩니다. 6 + 3, 6 – 3, 6 x 3 및 6/3 .

bash에서 이름-값 쌍으로 인수 값을 전달할 수 있습니다. 다음 스크립트를 사용하여 bash 파일을 생성하여 이름으로 인수 값을 읽는 방법을 보여줍니다. 스크립트는 두 개의 인수 변수를 읽습니다. 이름이 있는 인수 값은 스크립트의 첫 번째 명령문에 인쇄됩니다. 다음으로 for 루프는 명령줄 인수 값이 포함된 배열을 반복하는 데 사용됩니다. 배열의 각 요소는 `cut` 명령을 사용하여 키-값 쌍으로 분리됩니다. 다음으로 case 문은 키 값을 기반으로 특정 메시지를 인쇄하는 데 사용됩니다.

cl2.sh

#/오전/세게 때리다

#인수 변수 인쇄
던졌다 '인수 값: $1 $2'

# for 루프를 사용하여 각 인수를 개별적으로 읽습니다.
~을위한화난~에 ' [이메일 보호됨] '
~하다

#별도의 인수 이름과 값
열쇠= $(던졌다 $ 인수 | 자르다 -f1 -NS=)
= $(던졌다 $ 인수 | 자르다 -f2 -NS=)

#인수 이름을 기반으로 메시지 인쇄
사례 $키 ~에
이름) 던졌다 '학생 이름 =$값';;
표시) 던졌다 '획득 마크 =$값' ;;
*)
이삭
완료

산출:

다음 명령줄 인수를 사용하여 스크립트를 실행합니다.

$세게 때리다cl2.sh이름=아비르 호세인표시=90

위의 명령에는 두 개의 명령줄 인수가 제공됩니다. 이것들은 이름=아비르 호세인 그리고 마크=90 . 이름 그리고 점수 스크립트로 구분되며 출력 형식을 지정한 후 두 개의 값이 인쇄됩니다.

다음을 사용하여 명령줄 인수 처리 getopts 기능은 이 튜토리얼에서 논의되지 않습니다. 다음을 사용하여 명령줄 처리에 대해 알고 싶다면 getopts 기능을 사용하면 방문할 수 있습니다. 이 튜토리얼 .

맨 위로 이동

산수

산술 연산을 수행하는 것은 모든 프로그래밍 언어의 공통 요구 사항입니다. Bash는 다른 표준 프로그래밍 언어와 다른 방식으로 산술 연산을 수행합니다. bash에서 산술 연산을 수행하는 방법에는 여러 가지가 있습니다. 산술 연산을 수행하는 간단한 방법 중 하나가 이 섹션에 나와 있습니다. 다음 스크립트를 사용하여 bash 파일을 만듭니다. 이 스크립트에는 4가지 유형의 산술 연산이 표시됩니다. 간단한 합산 및 나눗셈 연산은 스크립트 시작 부분에 이중 첫 번째 대괄호를 사용하여 표시됩니다. 다음으로 사전 증가 작업이 표시됩니다. 마지막으로 속기 연산자를 사용하는 방법은 스크립트의 마지막 부분에 나와 있습니다.

arith.sh

#!/bin/bash
# 합계 계산
결과= $((오십+25))
# 합산값 출력
던졌다 '합 =$결과'

# 나눗셈 계산
결과= $((오십/25))
# 나눗셈 값 인쇄
던졌다 '나누기 =$결과'

# N에 값 할당
N=10
# 사전 증가 수행
((--N))
# N 값을 출력
던졌다 '감소 후 값 =$N'

# 속기 연산자 사용
((N +=10 ))
# N 값을 출력
던졌다 '10을 더한 값 =$N'

산출:

스크립트를 실행합니다.

$세게 때리다arith.sh

스크립트를 실행하면 다음 출력이 나타납니다.

모든 산술 연산은 위 스크립트에서 이중 대괄호를 사용하여 수행됩니다. 하지만 '를 사용할 수 있습니다. 허락하다 ',' 특급 ' 그리고 ' 기원전 ' bash에서 산술 연산을 수행하는 명령입니다. bash 산술 연산을 수행하기 위한 이러한 명령에 대해 더 알고 싶다면 이 튜토리얼을 방문하십시오.

맨 위로 이동

문자열 조작

bash의 문자열 데이터로 많은 유형의 작업을 수행할 수 있습니다. 일부는 문자열 연결, 문자열 비교, 문자열 분할, 문자열 대소문자 변경 등입니다. bash에는 문자열 작업을 수행하는 다른 표준 언어와 같은 기본 제공 문자열 함수가 없습니다. 이 자습서의 이 섹션에서는 몇 가지 일반적인 문자열 조작에 대해 설명합니다.

문자열 연결

두 개 이상의 문자열을 함께 추가하는 것을 문자열 연결이라고 합니다. 문자열은 차례로 배치하여 bash에서 함께 결합됩니다. 다음 스크립트를 사용하여 bash 파일을 생성하여 문자열 연결 사용을 보여줍니다. 두 개의 문자열 변수가 초기화되고 변수를 결합한 후 인쇄됩니다. 여기서의 내용은 $string1 그리고 $string2 병합되어 인쇄됩니다.

concat.sh

#!/bin/bash

#첫번째 문자열 변수 초기화
문자열1='좋아요 '
#두 번째 문자열 변수 초기화
문자열2='배시 프로그래밍'
# 두 문자열을 결합한 후 인쇄
던졌다 '$string1$string2'

산출:

스크립트를 실행합니다.

$세게 때리다concat.sh

스크립트를 실행하면 다음 출력이 나타납니다.

이 튜토리얼에서 문자열 연결에 대해 더 많이 알 수 있습니다.

맨 위로 이동

문자열 비교

Bash는 다양한 유형의 연산자를 사용하여 문자열 데이터를 비교합니다. 다음 스크립트로 bash 파일을 만들어 두 문자열 데이터를 비교하는 방법을 보여줍니다. 문자열 값은 다른 문자열과 비교되는 스크립트에서 입력으로 사용됩니다. 값이 일치하면 메시지, 당신은 파이썬을 좋아합니다 그렇지 않으면 인쇄됩니다 당신은 PERL을 좋아합니다 인쇄됩니다.

비교.sh

#!/bin/bash
던졌다임의의 문자열 값을 입력하십시오
읽다텍스트

#입력 데이터가 Python과 동일한지 확인
만약 [ $text=='파이썬' ];그 다음에
던졌다 '당신은 파이썬을 좋아합니다.'
또 다른
던졌다 '당신은 PERL을 좋아합니다'
~이다

산출:

스크립트를 실행합니다.

$세게 때리다비교.sh

입력 값이 'PERL'인 스크립트를 실행하면 다음과 같은 출력이 나타납니다.

문자열 비교에 대해 더 많이 알 수 있습니다. 이 튜토리얼 .

문자열 분할

Bash에는 문자열 데이터를 나누는 기본 제공 분할 기능이 없습니다. 문자열 데이터는 bash에서 다양한 유형의 구분 기호를 기반으로 여러 방법으로 나눌 수 있습니다. 다음 스크립트를 사용하여 bash 파일을 만들어 문자열 데이터를 bash로 나누는 방법을 보여줍니다. 문자열 값이 입력으로 사용됩니다. 이 스크립트는 다음 값을 나눕니다. $text 공간을 기반으로 합니다. 여기서, IFS 변수는 구분 기호를 설정하는 데 사용됩니다. '읽다' 여기에서 명령은 텍스트 값을 나누고 값을 배열에 저장하는 데 사용됩니다. ~을위한 루프는 배열을 반복하고 각 요소의 값을 인쇄하는 데 사용됩니다.

split.sh

#!/bin/bash
#문자열 값 입력
던졌다문자열 값 입력
읽다텍스트
# 구분자를 설정
IFS=''
# 공백 구분 기호를 기반으로 $text 값을 배열로 분할
읽다 -에게<<< '$text'
# 배열의 각 값을 출력
~을위한~에 '${arr[@]}';
~하다
인쇄 '$값N'
완료

산출:

스크립트를 실행합니다.

$세게 때리다split.sh

입력을 받으면 다음과 같은 출력이 나타납니다. 배시 프로그래밍 배우기 . 이 입력 값은 세 단어의 텍스트입니다. 따라서 문자열은 세 부분으로 나뉩니다.

문자열 비교에 대해 더 많이 알 수 있습니다. 이 튜토리얼 .

문자열의 대소문자 변경

대부분의 스크립팅 언어에는 문자열 데이터의 대소문자를 변경하는 내장 함수가 있습니다. 그러나 문자열 데이터의 경우 다음을 사용하여 bash에서 변경할 수 있습니다. `tr` 명령 또는 사용하여 ':높은' 그리고 ':낮추다' 키워드. bash에서 대소문자를 바꾸는 방법을 알기 위해 다음 스크립트를 사용하여 bash 파일을 만듭니다. 여기서 첫 번째 문자열 데이터는 다음을 사용하여 대문자로 변환됩니다. '^^' 기호 및 두 번째 문자열은 다음을 사용하여 소문자로 변환됩니다. `tr` 명령. `tr` 명령은 문자열의 모든 대문자를 검색하고 문자를 소문자로 변환합니다.

케이스.sh

#!/bin/bash

# 첫 번째 문자열 데이터 초기화
텍스트 1=' [이메일 보호됨] '

# 모든 문자를 대문자로 변환하여 $text1의 값을 출력합니다.
던졌다 ${이메일^^}

#두 번째 문자열 데이터 초기화
텍스트2='배시 프로그래밍 기본'

#모든 대문자를 소문자로 변환하여 $text2의 값을 출력합니다.
던졌다 $text2 | NS [:높은:] [:낮추다:]

산출:

스크립트를 실행합니다.

$세게 때리다케이스.sh

스크립트를 실행하면 다음 출력이 나타납니다.

문자열 비교에 대해 더 많이 알 수 있습니다. 이 튜토리얼 .

맨 위로 이동

루프를 통해 문자열 데이터 읽기

문자열 데이터는 모든 프로그래밍 언어의 문자 배열로 작동합니다. 어떻게 ' ~을위한 ' 루프를 사용하여 bash에서 문자열 데이터를 읽을 수 있음이 이 섹션에 나와 있습니다. for 루프를 사용하여 문자열 값의 각 부분을 읽는 다음 스크립트로 기본 파일을 만듭니다.

readstr.sh

#!/bin/bas
# for 루프를 사용하여 텍스트의 각 단어를 읽습니다.
~을위한~에배시 프로그래밍~을위한초보자
~하다
던졌다 $값
완료

산출:

스크립트를 실행합니다.

$세게 때리다readstr.sh

스크립트를 실행하면 다음 출력이 나타납니다.

루프를 사용하여 문자열 데이터 반복에 대해 더 많이 알 수 있습니다. 이 튜토리얼 .

맨 위로 이동

스크립트에서 반환 코드를 반환하고 다른 스크립트에서 잡기

하나의 bash 스크립트는 스크립트를 호출하고 다음을 사용하여 다른 스크립트에서 반환 코드를 잡을 수 있습니다. '$?' 반환 값을 읽습니다. 다음과 같은 bash 파일이 있다고 가정합니다. 첫 번째.sh 실행 후 코드를 반환합니다. 라는 다른 bash 파일을 만듭니다. 두 번째.sh 다음 스크립트를 추가하여 반환 값을 포착하고 다른 작업을 수행합니다. 두 파일의 코드는 아래와 같습니다. 첫 번째.sh 파일은 에서 호출됩니다 두 번째.sh 스크립트 시작 부분에 있는 파일. 첫 번째.sh 입력 값에 따라 종료 코드를 반환합니다. second.sh는 다음과 같이 코드를 포착합니다. '$?' 1과 비교하십시오. 두 값이 같으면 인쇄됩니다. 입력된 숫자가 100보다 큽니다. , 그렇지 않으면 인쇄됩니다. 입력된 숫자가 100보다 작거나 같음 .

첫 번째.sh

#!/bin/bash

던졌다 '숫자 값 입력'
읽다N

# 입력값이 100보다 작거나 같은지 확인
만약 [[ $n -NS 100 ]]
그 다음에
출구 0
또 다른
출구 1
~이다

두 번째.sh

#! /bin/bash

#first.sh 파일 실행
세게 때리다 '첫째.sh'

#반환 코드가 1인지 확인하십시오.
만약 [ $? -eq 1 ]
그 다음에
던졌다 '입력한 숫자가 100보다 큽니다'
또 다른
던졌다 '입력된 숫자가 100보다 작거나 같습니다'
~이다

산출:

스크립트를 실행합니다.

$세게 때리다두 번째.sh

스크립트를 55와 110으로 두 번 실행하면 다음과 같은 출력이 나옵니다.

맨 위로 이동

파일 읽기 및 쓰기

파일 읽기 및 쓰기는 bash 프로그래밍의 일반적인 요구 사항입니다. Bash에는 파일을 읽거나 쓰는 다른 언어와 같은 내장 기능이 없습니다. bash에서 파일을 읽는 방법에는 여러 가지가 있습니다. bash에서 파일을 읽거나 쓰는 가장 일반적인 방법은 다음을 사용하는 것입니다. '고양이' 명령. 그러나 이 명령은 한 번에 파일의 전체 내용을 읽는 데 사용됩니다. 루프를 사용하여 파일을 한 줄씩 읽을 수도 있습니다. '읽다' 명령. 리디렉션 연산자를 사용하여 '>' , bash의 모든 파일에 데이터를 쓸 수 있습니다. 파일에 데이터를 추가하려면 다음을 사용해야 합니다. '>>' 운영자. 파일 읽기 및 쓰기 작업은 이 섹션의 다음 부분에 나와 있습니다.

bash에서 파일 읽기

다음 스크립트를 사용하여 bash 파일을 생성하여 ' 하드웨어.txt '. 이 파일의 내용은 아래와 같습니다. 스크립트에서 파일의 전체 내용을 읽습니다. '고양이' 명령을 먼저 그리고 다음으로, while 루프는 파일을 한 줄씩 읽는 데 사용됩니다.

하드웨어.txt

감시 장치
건반

스캐너
인쇄기

readfile.sh

#!/bin/bash

던졌다 'cat 명령을 사용하여 파일 읽기'

# `cat` 명령을 사용하여 파일의 내용을 읽습니다.
콘텐츠=``고양이하드웨어.txt``
던졌다 $콘텐츠

던졌다 '루프를 사용하여 한 줄씩 파일 읽기'

# 파일 이름 지정
파일 이름='하드웨어.txt'

# 루프의 각 반복마다 파일의 각 라인을 읽습니다.
동안 읽다선;
~하다
# 라인을 출력
던졌다 $라인
완료<$파일명

산출:

다음 명령을 실행합니다.

$고양이하드웨어.txt
$세게 때리다readfile.sh

여기서 첫 번째 명령은 파일의 내용을 인쇄하고, 하드웨어.txt bash 스크립트를 실행하지 않고 두 번째 명령은 다음 스크립트를 실행합니다. readfile.sh 다음을 사용하여 파일 내용을 두 번 인쇄합니다. '고양이' 명령과 '읽다' while 루프가 있는 명령. 당신은 이것을 방문 할 수 있습니다 지도 시간 파일을 한 줄씩 읽는 방법에 대해 자세히 알아보세요.

bash에서 파일 쓰기

다음 스크립트를 사용하여 bash 파일을 만들어 새 파일에 새 콘텐츠를 작성하고 해당 파일에 데이터를 추가합니다.

쓰기 파일.sh

#!/bin/bash

던졌다 '텍스트 입력'
#문자열 데이터 읽기
읽다str1
# 처음으로 파일에 입력 데이터 추가
던졌다 $str1 >테스트.txt

던졌다 '다른 텍스트를 입력하세요'
# 다른 문자열 데이터 읽기
읽다str2
# 파일 끝에 입력 데이터 추가
던졌다 $str2 >>테스트.txt

#파일의 전체 내용 표시
던졌다 ``고양이테스트.txt``

산출:

스크립트를 실행합니다.

$세게 때리다쓰기 파일.sh

스크립트를 실행하면 다음 출력이 나타납니다.

맨 위로 이동

파이프

파이프는 명령 출력을 다른 명령 입력으로 리디렉션하는 데 사용됩니다. 특정 출력을 생성하기 위해 다양한 유형의 bash 명령 사이에서 사용할 수 있습니다. 표준 입력은 파이프로 Linux의 표준 출력과 연결됩니다. 원하는 출력을 얻으려면 파이프( | ) 기호를 사용하여 명령을 순서대로 설정해야 합니다. 파이프를 사용하여 하나의 명령에서 둘 이상의 명령을 함께 실행할 수 있습니다. 동일한 작업을 수행하려면 파이프 없이 여러 줄로 여러 명령을 실행해야 합니다. 따라서 파이프를 사용하면 짧은 형식으로 많은 유형의 작업을 수행하는 데 매우 유용합니다.

통사론:

명령1|명령2|...

여기서 command1의 출력은 command2의 입력으로 전달됩니다.

이 섹션의 다음 부분에서는 파이프를 사용하거나 파이프를 사용하지 않고 동일한 유형의 작업을 수행합니다. 라는 텍스트 파일이 있다고 가정합니다. 마크.txt 다음 데이터와 함께 제공됩니다.

마크.txt

아스라프 CSE-409 79

카비르 CSE-304 95

케야 CSE-101 67

아스라프 CSE-304 88

케야 CSE-409 90

아스라프 CSE-101 92

파일의 데이터를 정렬하고 학생 이름 'K'의 모든 항목을 찾아 인쇄해야합니다. 응 ' . 다음 섹션에 표시된 파이프를 사용하지 않고 여러 명령을 실행하여 이 작업을 수행할 수 있습니다. 원하는 출력을 얻으려면 다음 명령을 실행해야 합니다. 첫 번째 명령은 파일을 정렬합니다. 두 번째 명령은 'K 응 ' `를 사용하여 꽉 붙잡음 ` 명령을 실행하고 출력을 다음 위치에 저장합니다. 임시.txt 파일. 세 번째 명령은 임시.txt 사용하여 파일 `화장실` 명령.

$종류마크.txt
$꽉 붙잡음 '케야'마크.txt>임시.txt
$화장실 -NS임시.txt

산출:

파일에 학생 'Keya'의 두 항목이 있습니다. 따라서 위의 명령을 실행하면 다음과 같은 출력이 나타납니다.

다음 명령에 표시된 파이프로 단일 명령을 실행하여 위의 세 명령을 쉽게 병합하고 동일한 출력을 얻을 수 있습니다. 출력을 얻기 위해 여기에는 임시 파일이 필요하지 않습니다. 여기서 `의 출력 종류 ` 명령은 `의 입력으로 전달됩니다. 꽉 붙잡음 ` 명령과 `의 출력 꽉 붙잡음 ` 명령은 입력으로 전달됩니다. `화장실` 명령.

$종류마크.txt| 꽉 붙잡음 '케야' | 화장실 -NS

산출:

위의 명령을 실행한 후에는 이전 명령의 출력과 같은 다음 출력을 얻을 수 있습니다. 명령의 출력은 2가 됩니다.

맨 위로 이동

결론:

이 튜토리얼에서는 bash 스크립팅 언어의 가장 유용하고 필요한 주제를 다루려고 합니다. 이 튜토리얼을 읽고 bash 스크립트를 보다 효율적으로 작성할 수 있기를 바랍니다.