Linux의 그래픽 인터페이스가 아무리 단순하고 기능이 많다고 해도 터미널을 통해 해결하는 것이 더 편리한 작업은 여전히 ​​있습니다. 첫째, 더 빠르기 때문에 둘째, 모든 컴퓨터에 그래픽 인터페이스가 있는 것은 아닙니다. 예를 들어 서버에서 모든 작업은 컴퓨팅 리소스를 절약하기 위해 터미널을 통해 수행됩니다.

이미 경험이 많은 사용자라면 터미널을 통해 다양한 작업을 수행하는 경우가 많습니다. 종종 여러 명령을 차례로 실행해야 하는 작업이 있습니다. 예를 들어 시스템을 업데이트하려면 먼저 리포지토리를 업데이트한 다음 새 버전의 패키지를 다운로드해야 합니다. 이것은 단지 예일 뿐이며 백업을 수행하고 원격 서버에 복사한 파일을 업로드하는 등의 작업이 많이 있습니다. 따라서 같은 명령을 여러 번 입력하지 않기 위해 스크립트를 사용할 수 있습니다. 이 기사에서는 Bash로 스크립트를 작성하고 기본 연산자와 작동 방식, 말하자면 처음부터 bash 스크립트를 살펴보겠습니다.

스크립트 또는 스크립트라고도 하는 스크립트는 인터프리터 프로그램에 의해 차례로 읽고 실행되는 일련의 명령입니다. 이 경우에는 명령줄 프로그램인 bash입니다.

스크립트는 우리가 수동으로 입력하는 데 익숙한 일반적인 명령과 이를 실행할 프로그램을 나열하는 일반 텍스트 파일입니다. 스크립트를 실행할 로더는 환경 변수로 작업하는 방법을 모르기 때문에 실행할 프로그램의 정확한 경로를 전달해야 합니다. 그런 다음 스크립트를 이 프로그램에 전달하고 실행이 시작됩니다.

Bash 셸용 스크립트의 가장 간단한 예:

!/bin/bash
echo "안녕하세요"

echo 유틸리티는 전달된 문자열을 매개변수로 화면에 인쇄합니다. 첫 번째 줄은 특별하며 명령을 실행할 프로그램을 지정합니다. 일반적으로 다른 프로그래밍 언어로 스크립트를 만들고 원하는 인터프리터를 지정할 수 있습니다(예: python).

!/usr/bin/env 파이썬
print("안녕하세요")

또는 PHP에서:

!/usr/bin/env PHP
echo "안녕하세요";

첫 번째 경우에는 명령을 실행할 프로그램을 직접 가리켰고 다음 두 경우에는 프로그램의 정확한 주소를 모르므로 env 유틸리티에 이름으로 찾아 실행하도록 요청합니다. 이 접근 방식은 많은 스크립트에서 사용됩니다. 하지만 그게 다가 아닙니다. Linux 시스템에서 시스템이 스크립트를 실행하려면 스크립트와 함께 파일에 실행 가능한 플래그를 설정해야 합니다.

이 플래그는 파일 자체에서 아무 것도 변경하지 않으며 시스템에 이것이 단순한 텍스트 파일이 아니라 프로그램이며 실행되어야 하고 파일을 열고 인터프리터를 찾아 실행해야 함을 알려줍니다. 인터프리터를 지정하지 않으면 기본적으로 사용자의 인터프리터가 사용됩니다. 그러나 모든 사람이 bash를 사용하는 것은 아니므로 명시적으로 지정해야 합니다.

실행하려면:

chmod ugo+x 스크립트 파일

이제 작은 첫 번째 프로그램을 실행합니다.

./스크립트_파일

모든 것이 작동합니다. 예를 들어 업데이트를 위한 작은 스크립트를 작성하는 방법을 이미 알고 있습니다. 보시다시피 스크립트에는 터미널에서 실행되는 것과 동일한 명령이 포함되어 있어 쓰기가 매우 쉽습니다. 그러나 이제 우리는 작업을 약간 복잡하게 만들 것입니다. 스크립트는 프로그램이기 때문에 스스로 결정을 내리고 명령 실행 결과를 저장하고 루프를 실행해야 합니다. 이 모든 작업은 Bash 셸로 수행할 수 있습니다. 사실, 모든 것이 여기에서 훨씬 더 복잡합니다. 간단하게 시작해 보겠습니다.

스크립트의 변수

Bash에서 스크립트 작성은 변수 생성을 의미하는 임시 데이터를 저장하지 않고는 거의 완료되지 않습니다. 단일 프로그래밍 언어는 변수 없이는 할 수 없으며 원시 쉘 언어도 마찬가지입니다.

이전에 환경 변수를 만난 적이 있을 수 있습니다. 따라서 이들은 동일한 변수이며 동일한 방식으로 작동합니다.

예를 들어 문자열 변수를 선언해 보겠습니다.

string="안녕하세요 세계"

문자열 값은 따옴표 안에 있습니다. 그러나 사실 따옴표가 항상 필요한 것은 아닙니다. bash의 주요 원칙은 여기에서 유지됩니다. 공백은 특수 문자, 구분 기호이므로 따옴표를 사용하지 않으면 world는 이미 별도의 명령으로 간주됩니다. 같은 이유로 등호 앞뒤에 공백을 두지 않습니다. 징후.

$ 기호는 변수의 값을 표시하는 데 사용됩니다. 예를 들어:

스크립트를 수정해 보겠습니다.

!/bin/bash
string1="안녕하세요"
string2=세계
문자열=$문자열1$문자열2
에코 $string

그리고 우리는 다음을 확인합니다.

Bash는 C++와 같은 고급 언어와 같은 방식으로 변수 유형을 구분하지 않으므로 변수에 숫자와 문자열을 모두 할당할 수 있습니다. 마찬가지로 이 모든 것이 문자열로 간주됩니다. 셸은 문자열 병합만 지원합니다. 이렇게 하려면 변수 이름을 한 줄에 쓰기만 하면 됩니다.

!/bin/bash
string1="안녕하세요"
string2=세계
문자열=$string1$string2\ 및\ 나
string3=$string1$string2"와 나"
에코 $string3

우리는 다음을 확인합니다:

내가 말했듯이 문자열에 특수 문자가 없으면 따옴표는 선택 사항입니다. 문자열을 병합하는 두 가지 방법을 자세히 살펴보고 여기에서 따옴표의 역할도 보여줍니다. 더 고급 문자열 처리 또는 산술 연산이 필요한 경우 이는 셸 기능에 포함되지 않으며 이를 위해 일반 유틸리티가 사용됩니다.

변수 및 명령 출력

변수가 유틸리티 실행 결과를 저장할 수 없다면 그다지 유용하지 않을 것입니다. 이를 위해 다음 구문이 사용됩니다.

$(팀 )

이 구성을 사용하면 명령의 출력이 화면이 아닌 호출된 위치로 직접 리디렉션됩니다. 예를 들어 날짜 유틸리티는 현재 날짜를 반환합니다. 다음 명령은 동일합니다.

이해했나요? hello world와 날짜가 표시될 스크립트를 작성해 보겠습니다.

string1="안녕하세요 세계"
string2=$(날짜)

문자열=$문자열1$문자열2

이제 변수에 대해 충분히 알고 bash 스크립트를 작성할 준비가 되었지만 앞으로 더 많은 것이 있습니다. 다음으로 매개변수와 제어 구조를 살펴보겠습니다. 이것들은 모두 일반 bash 명령이며 파일에 저장할 필요가 없으며 이동 중에 즉시 실행할 수 있습니다.

스크립트 옵션

사용자 입력에 의존하지 않는 bash 스크립트를 만드는 것이 항상 가능한 것은 아닙니다. 대부분의 경우 사용자에게 어떤 작업을 수행할지 또는 어떤 파일을 사용할지 물어봐야 합니다. 스크립트를 호출할 때 매개변수를 전달할 수 있습니다. 이러한 모든 매개변수는 숫자로 명명된 변수로 사용할 수 있습니다.

1이라는 변수에는 첫 번째 매개변수, 변수 2, 두 번째 등의 값이 포함됩니다. 이 bash 스크립트는 첫 번째 매개변수의 값을 출력합니다.

!/bin/bash
에코 $1

스크립트의 제어 구성

특정 요소를 분석하고 이에 대한 응답으로 필요한 조치를 수행하는 기능이 없으면 bash 스크립트를 작성하는 것이 그다지 유용하지 않을 것입니다. 이것은 다소 복잡한 주제이지만 bash 스크립트를 작성하기 위해 매우 중요합니다.

Bash에는 조건을 확인하는 명령어가 있는데 그 구문은 다음과 같다.

명령 조건인 경우
그 다음에

또 다른

파이

이 명령은 조건 명령의 종료 코드를 확인하고 0(성공)이면 해당 명령 또는 단어 뒤의 여러 명령을 실행하고 종료 코드가 1이면 else 블록이 실행되고 fi는 블록의 완료를 의미합니다. 명령.

그러나 우리는 명령의 반환 코드가 아니라 문자열과 숫자를 비교하는 데 가장 관심이 많기 때문에 [[ 명령이 도입되어 다양한 비교를 수행하고 비교 결과에 따라 반환 코드를 발행할 수 있습니다. 구문은 다음과 같습니다.

[[ 매개변수1 연산자 매개변수2 ]]

비교를 위해 이미 친숙한 연산자를 사용합니다.<,>,=,!= 등 표현식이 참이면 명령은 0을 반환하고 그렇지 않으면 - 1을 반환합니다. 터미널에서 동작을 약간 테스트할 수 있습니다. 마지막 명령의 반환 코드는 $? 변수에 저장됩니다.

이제 이 모든 것을 결합하여 조건식이 있는 스크립트를 얻습니다.

!/bin/bash
만약 [[ $1 > 2 ]]
그 다음에
echo $1"이 2"보다 큽니다.
또 다른
echo $1"은 2 또는 2"보다 작습니다.
파이

물론 이 디자인에는 더 강력한 기능이 있지만 이 기사에서 다루기에는 너무 복잡합니다. 아마도 나중에 그것에 대해 쓸 것입니다. 지금은 주기로 넘어가겠습니다.

스크립트의 루프

프로그램의 장점은 여러 번 수행해야 하는 작업을 여러 줄로 지정할 수 있다는 것입니다. 예를 들어, 몇 줄로 구성되지만 매개변수를 구문 분석하고 필요한 작업을 수행하면서 몇 시간 동안 실행되는 bash 스크립트를 작성할 수 있습니다.

먼저 for 루프를 살펴보겠습니다. 구문은 다음과 같습니다.

목록의 변수에 대해
하다

완료

전체 목록을 반복하고 목록의 값을 차례로 변수에 할당하고 각 할당 후에 do와 done 사이에 있는 명령을 실행합니다.

예를 들어 5자리를 반복해 보겠습니다.

1 2 3 4 5의 인덱스용
하다
에코 $ 인덱스
완료

또는 현재 디렉토리의 모든 파일을 나열할 수 있습니다.

$(ls -l)의 파일에 대해; echo "$file"; 완료

아시다시피 이름을 표시할 수 있을 뿐만 아니라 필요한 작업도 수행할 수 있으므로 bash 스크립트를 만들 때 매우 유용합니다.

우리가 살펴볼 두 번째 루프는 조건 명령이 코드 0, 성공을 반환하는 동안 실행되는 while 루프입니다. 구문을 고려하십시오.

동안 명령 조건
하다

완료

예를 고려하십시오.

!/bin/bash
인덱스=1
동안 [[ $인덱스< 5 ]]
하다
에코 $ 인덱스
"인덱스=인덱스+1"로 하자
완료

보시다시피 모든 것이 완료되었으며 let 명령은 단순히 지정된 수학 연산을 수행합니다. 이 경우 변수 값을 1만큼 증가시킵니다.

나는 다른 것을 주목하고 싶습니다. while, for, if와 같은 구문은 여러 줄에 쓰도록 설계되었으며 한 줄에 쓰려고 하면 오류가 발생합니다. 그럼에도 불구하고 줄 바꿈이 있어야 하는 곳에 세미콜론 ";"을 넣는 것은 가능합니다. 예를 들어, 이전 루프는 한 줄로 실행되었을 수 있습니다.

인덱스=1; 동안 [[ $인덱스< 5 ]]; do echo $index; let "index=index+1"; done;

모든 것이 매우 간단합니다. 추가 bash 용어와 기능으로 기사를 복잡하게 만들지 않고 가장 기본적인 것 만 사용하려고했습니다. 어떤 경우에는 bash 스크립트용 GUI를 만들어야 할 수도 있습니다. 그런 다음 zenity 또는 kdialog와 같은 프로그램을 사용할 수 있습니다. 이 프로그램을 사용하면 사용자에게 메시지를 표시하고 정보를 요청하는 것이 매우 편리합니다.

결론

이제 Linux에서 스크립팅의 기본 사항을 이해했으며 예를 들어 백업에 필요한 스크립트를 작성할 수 있습니다. 나는 처음부터 bash 스크립트를 보려고 노력했다. 따라서 모든 측면이 고려되지 않았습니다. 아마도 다음 기사 중 하나에서 이 주제로 돌아갈 것입니다.

Linux에서 스크립트 작성(예제 학습)

———————————————————————————-

1. 소개

스크립트를 작성하는 데 필요한 것
명령줄 도구 및 필요한 옵션에 대한 지식.
초등학교 수준의 기본 영어 지식은 방해가 되지 않습니다.

스크립트가 필요한 이유
첫째, 리눅스 서버의 관리는 어느 정도 동일한 명령의 체계적인 실행으로 귀결됩니다. 또한 이러한 명령을 사람이 수행할 필요는 없습니다. 기계에서 실행되도록 프로그래밍할 수 있습니다.
둘째, (갑자기) 20-1000 ... 반복적인 작업을 수행하는 것만으로도 스크립트에서 구현하기가 훨씬 쉽습니다.

스크립트란?
스크립트는 컴퓨터가 특정 순서와 특정 시간에 실행해야 하는 일련의 명령입니다. 명령은 내부 쉘 명령(루프, 조건, 텍스트 정보 처리, 환경 변수 작업 등)이거나 필요한 매개변수를 사용하여 콘솔에서 실행하는 프로그램일 수 있습니다.

스크립트를 작성하는 방법
우리의 경우 스크립트는 실행 속성이 있는 텍스트 파일입니다. 스크립트 파일이 #!로 시작하는 경우 UNIX 세계에서는 sha-bang이라고 하며 이는 스크립트를 실행하는 데 사용할 인터프리터를 시스템에 알려줍니다. 이것이 이해하기 어렵다면 모든 스크립트를 #!/bin/bash 또는 #!/bin/sh 행으로 작성하기 시작하면 명령과 주석이 실행된다는 것을 기억하십시오.

이별의 말
스크립트의 거의 모든 줄에 가능한 한 많은 주석을 작성하는 것이 좋습니다. 시간이 지나면 한 번 작성된 스크립트를 변경하거나 현대화해야 합니다. 대본에 쓰여진 내용을 기억하지 못하거나 이해하지 못하면 변경하기 어려워지고 처음부터 쓰기가 더 쉽습니다.

어떤 스크립트가 필요할 수 있습니까?

    시스템이 부팅될 때 방화벽 규칙을 설정합니다.
    설정 및 데이터 백업을 수행합니다.
    메일 서버에 사서함 추가(더 정확하게는 mysql 데이터베이스에)
    특정 시간(가급적 매일 밤)에 프록시 서버 로그를 스캔하고 다운로드된 트래픽 양에 대한 편리한 웹 보고서를 발행하는 프로그램을 시작합니다.
    누군가가 ssh, 연결 시간 및 클라이언트 주소를 통해 우리 서버에 액세스한 정보를 메일로 전송합니다.

스크립팅 기술 정보
우리는 텍스트 파일을 만들고, 편집하고, 실행 권한을 설정하고, 실행하고, 오류를 확인하고, 수정하고, 실행하고, 오류를 확인합니다.
모든 것이 핥아지고 올바르게 작동하면 특정 시간 동안 자동로드 또는 스케줄러에 넣습니다.

———————————————————————————-

2. 내부 BASH 언어로 스크립트 작성 학습
원본: https://www.linuxconfig.org/Bash_scripting_Tutorial

이 튜토리얼에서는 Bash 내부 언어를 사용하여 스크립트(이하 스크립트라고 함)를 작성하는 방법에 대한 사전 지식이 없다고 가정합니다. 이 가이드의 도움으로 스크립트 작성이 매우 쉬운 작업임을 곧 알게 될 것입니다. "Hello World!" 문자열을 출력하는 간단한 스크립트로 튜토리얼을 시작하겠습니다. (영어 번역 - 안녕하세요 여러분!)

1. 시나리오 "안녕하세요"
다음은 첫 번째 bash 스크립트 예제입니다.

#!/bin/bash
echo "Hello World"

hello_world.sh 파일이 포함된 디렉토리로 변경하고 실행 가능하게 만드십시오.

코드: $ chmod +x hello_world.sh 모두 선택

실행을 위해 스크립트 실행

코드: $ ./hello_world.sh 모두 선택

2. 간단한 보관 bash 스크립트

#!/bin/bash
tar -czf myhome_directory.tar.gz /home/user

코드: $ ./backup.sh 모두 선택

$ du -sh myhome_directory.tar.gz
41M myhome_directory.tar.gz

3. 변수 작업
이 예에서는 간단한 변수를 선언하고 echo 명령을 사용하여 화면에 표시합니다.

#!/bin/bash
STRING="HELLO WORLD!!!"
에코 $STRING

코드: $ ./hello_world.sh 모두 선택
안녕하세요 세계!!!

변수가 있는 보관 스크립트:

#!/bin/bash
OF=myhome_directory_$(날짜 +%Y%m%d).tar.gz
IF=/홈/사용자
tar -czf $OF $IF

코드: $ ./backup.sh 모두 선택
tar: 멤버 이름에서 선행 "\" 제거
$ du -sh *tar.gz
41M myhome_directory_20100123.tar.gz

3.1 전역 및 지역 변수

#!/bin/bash
# 전역변수 선언
# 이 변수는 이 스크립트의 어느 곳에서나 사용할 수 있습니다.
VAR="전역 변수"
함수 bash(
# 지역변수 선언
# 이러한 변수는 선언된 함수에 대해서만 유효합니다.
로컬 VAR="로컬 변수"
에코 $VAR
}
에코 $VAR
세게 때리다
# 전역 변수는 변경되지 않았습니다.
에코 $VAR

코드: $ ./variables.sh 모두 선택
전역 변수
지역 변수
전역 변수

4. 스크립트에 인수 전달

#!/bin/bash
# 미리 정의된 변수를 사용하여 인수에 액세스
# 화면에 인수를 출력
에코 $1 $2 $3 ' -> 에코 $1 $2 $3'

# 특수 배열 args=("를 통해 인수에 액세스할 수도 있습니다. [이메일 보호됨]»)
# 화면에 인수를 출력
echo $(args) $(args) $(args) ' -> args=(“ [이메일 보호됨]»); 에코 $(인수) $(인수) $(인수)'

# 변수를 사용 [이메일 보호됨]모든 인수를 한 번에 표시하려면
에코 [이메일 보호됨]' -> 에코 [이메일 보호됨]

$# 변수를 사용하여 스크립트에 전달된 인수 수 표시
echo 전달된 인수의 수: $# ' -> echo 전달된 인수의 수: $#'

코드: 모든 $ ./arguments.sh 선택 Bash 스크립팅 자습서
Bash 스크립팅 튜토리얼 -> echo $1 $2 $3
Bash 스크립팅 튜토리얼 -> args=(" [이메일 보호됨]"); 에코 $(인수) $(인수) $(인수)
Bash 스크립팅 튜토리얼 -> 에코 [이메일 보호됨]
전달된 인수 수: 3 -> echo 전달된 인수 수: $#

5. 스크립트에서 셸 명령 실행

#!/bin/bash
# 백틱 » ` ` »을 사용하여 쉘 명령을 실행합니다.
echo `uname -o`
# 이제 따옴표 없이 시도해보자
에코 우나메 -o

코드: 모든 $ uname -o 선택
GNU/리눅스
$ ./bash_backtricks.sh
GNU/리눅스
우나메오

보시다시피 두 번째 경우에는 실행 결과가 아니라 명령 자체가 표시되었습니다.

6. 사용자 입력 읽기(상호작용)

#!/bin/bash
echo -e "안녕하세요, \c라는 단어를 입력하세요."
단어를 읽다
echo "입력한 단어는 $word입니다."
echo - "두 단어를 입력할 수 있습니까? »
단어1 단어2 읽기
echo "입력하신 내용은 다음과 같습니다: \"$word1\" \"$word2\""
echo - "bash 스크립팅에 대해 어떻게 생각하십니까? »
# 읽기 명령은 이제 기본 내장 변수 $REPLY에 응답을 저장합니다.
읽다
echo "$REPLY라고 하셨습니다. 반갑습니다! »
echo - "당신이 가장 좋아하는 색은 무엇입니까? »
# -a는 읽기 명령을 만들어 배열로 읽습니다.
읽기 - 색상
echo "내가 가장 좋아하는 색상은 $(colours), $(colours) 및 $(colours):-)입니다."

코드: $ ./read.sh 모두 선택
안녕하세요, 단어를 입력하세요: something
입력한 단어는 다음과 같습니다.
두 단어를 입력할 수 있습니까?
데비안 리눅스
다음은 입력한 내용입니다. "Debian" "Linux"
bash 스크립팅에 대해 어떻게 생각하십니까?
좋은
당신은 좋은 말을 듣게되어 기쁩니다!
가장 좋아하는 색상은 무엇입니까?
블루 그린 블랙
제가 좋아하는 컬러도 블루, 그린, 블랙이에요 :-)

7. 트랩 사용하기

#!/bin/bash
# 트랩 선언
트랩 bashtrap INT
# 화면 지우기
분명한;
# 사용자가 CTRL-C를 누를 때 후크 기능이 실행됩니다:
# 표시될 것입니다 => bash 트랩 서브루틴 실행 !
# 하지만 스크립트는 계속 실행됩니다.
배쉬트랩()
{
echo "CTRL+C 감지 !... bash 트랩 실행 중 !"
}
# 스크립트는 최대 10까지 계산합니다.
'seq 1 10'의 경우; 하다
echo "$a/10 종료합니다."
수면1;
완료
echo "배쉬 트랩 예제 종료!!!"

코드: $ ./trap.sh 모두 선택
1/10
2/10
3/10
4/10
5/10
6/10

7/10
8/10
9/10
CTRL+C 감지 !... bash 트랩 실행 중!
10/10
Bash Trap 예제 종료!!!

보시다시피 Ctrl-C 키 조합은 스크립트 실행을 중지하지 않았습니다.

8. 배열
8.1 단순 배열 선언

#!/bin/bash
# 요소가 4개인 간단한 배열 선언
ARRAY=('데비안 리눅스' '레드햇 리눅스' 우분투 리눅스)
# 배열의 요소 수를 가져옵니다.
요소=$(#ARRAY[@])

# 배열의 각 요소를 순환
((i=0;i<$ELEMENTS;i++)); do
에코 $(ARRAY[$(i)])
완료

코드: 모든 $./arrays.sh 선택
데비안 리눅스
레드햇 리눅스
우분투
리눅스

8.2 파일의 값으로 배열 채우기

#!/bin/bash
# 배열 선언
선언 -a ARRAY
# 실행 명령 # stdin(보통 키보드)은 이 파일에서 생성됩니다. 이를 통해 읽을 수 있습니다.
# 파일 내용을 한 줄씩 sed 및/또는 awk로 입력한 각 줄을 구문 분석합니다.
임원 10 letcount=0

LINE을 읽는 동안<&10; do

ARRAY[$count]=$LINE
((카운트++))
완료

echo 요소 수: $(#ARRAY[@])
# 배열 값 표시
에코 $(ARRAY[@])
# 파일을 닫는다
실행 10>&-

코드: 모든 $ cat bash.txt 선택
데비안 리눅스
레드햇 리눅스
우분투
리눅스
$ ./arrays.sh
요소 수: 4
데비안 리눅스 레드햇 리눅스 우분투 리눅스

9. if-then-else 조건
9.1. "if-else" 조건의 간단한 사용
조건이 작동하지 않는 대괄호 안의 공백에 주의하십시오.

#!/bin/bash
디렉토리="./BashScripting"

# 디렉토리가 존재하는지 확인
if [ -d $디렉토리 ]; 그 다음에
echo "디렉토리가 존재합니다"
또 다른
echo "디렉토리가 존재하지 않습니다"
파이

코드: $ ./if_else.sh 모두 선택
디렉토리가 존재하지 않습니다
$ mkdir BashScripting
$ ./if_else.sh
디렉토리 존재

9.2 중첩된 if-else 조건

#!/bin/bash
# 값이 4인 변수 선언
선택=4
# 표시하다
에코 "1. 세게 때리다"
에코 "2. 스크립팅»
에코 "3. 지도 시간"

# 변수가 4일 때 실행
# 루핑
동안 [ $choice -eq 4 ]; 하다

# 사용자 입력 읽기
읽기 선택
# 중첩된 "if-else" 조건
if [ $choice -eq 1 ] ; 그 다음에

echo "선택한 단어: Bash"

if [ $choice -eq 2 ] ; 그 다음에
echo "선택한 단어: 스크립팅"
또 다른

if [ $choice -eq 3 ] ; 그 다음에
echo "선택한 단어: Tutorial"
또 다른
echo "1~3 사이에서 선택해주세요!"
에코 "1. 세게 때리다"
에코 "2. 스크립팅»
에코 "3. 지도 시간"
echo -n "단어를 선택하세요? »
선택=4
파이
파이
파이
완료

코드: $ ./nested.sh 모두 선택
1. 배시
2. 스크립팅
3. 튜토리얼

5

1. 배시
2. 스크립팅
3. 튜토리얼
단어를 선택하세요
4
1~3중 선택해주세요!
1. 배시
2. 스크립팅
3. 튜토리얼
단어를 선택하세요
3
당신은 단어를 선택했습니다: 튜토리얼

따라서 먼저 "while" 루프의 본문이 실행됩니다. 선택 변수는 처음에 4로 설정됩니다. 그런 다음 사용자 입력을 읽고 입력이 1.2 또는 3과 같지 않으면 루프 본문이 반복되는 것과 관련하여 변수를 다시 4로 만듭니다(1.2 또는 3을 다시 입력해야 함).

10. 비교
10.1 산술적 비교

중위<
-gt>
-르<=
-게 >=
-eq ==
-네 !=

#!/bin/bash

NUM1=2
NUM2=2
if [ $NUM1 -eq $NUM2 ]; 그 다음에
echo "두 값이 같음"
또 다른
echo "값이 같지 않습니다"
파이

코드: 모든 $ ./equals.sh 선택
두 값 모두 동일

#!/bin/bash
# 정수 값으로 변수 선언
NUM1=2
NUM2=3
if [ $NUM1 -eq $NUM2 ]; 그 다음에
echo "두 값이 같음"
또 다른
echo "값이 같지 않습니다"
파이

코드: 모든 $ ./equals.sh 선택
값이 같지 않음

#!/bin/bash
# 정수 값으로 변수 선언
NUM1=2
NUM2=1
if [ $NUM1 -eq $NUM2 ]; 그 다음에
echo "두 값이 같음"
elif [ $NUM1 -gt $NUM2 ]; 그 다음에
echo "$NUM1이 $NUM2보다 큽니다."
또 다른
echo "$NUM2는 $NUM1보다 큽니다."
파이

코드: 모든 $ ./equals.sh 선택
2는 1보다 큼

10.2 문자-텍스트 비교

똑같다
!= 같지 않음
< меньще чем
> 이상
-n s1 변수 s1이 비어 있지 않습니다.
-z s1 변수 s1이 비어 있습니다.

#!/bin/bash

S1="배쉬"

S2="스크립팅"
if [ $S1 = $S2 ]; 그 다음에

또 다른
echo "문자열이 같지 않습니다"
파이

코드: $ ./statement.sh 모두 선택
문자열이 같지 않음

#!/bin/bash
# 기호 변수 S1 선언
S1="배쉬"
# 기호 변수 S2 선언
S2="배쉬"
if [ $S1 = $S2 ]; 그 다음에
echo "두 문자열이 같음"
또 다른
echo "문자열이 같지 않습니다"
파이

코드: $ ./statement.sh 모두 선택
두 문자열이 동일합니다.

11. 파일 확인

B 파일 이름 블록 특수 파일
-c 파일 이름 특수 문자 파일
-d directoryname 디렉토리 존재 여부 확인
-e filename 파일 존재 여부 확인
-f filename 디렉토리가 아닌 일반 파일 존재 여부 확인
-G filename 파일이 존재하고 유효한 그룹 ID가 소유하고 있는지 확인합니다.
-g filename 파일이 존재하고 set-group-id이면 true입니다.
-k 파일 이름 고정 비트
-L 파일 이름 심볼릭 링크
-O filename 파일이 존재하고 유효 사용자 ID가 소유한 경우 참입니다.
-r filename 파일이 읽을 수 있는지 확인
-S filename 파일이 소켓인지 확인
-s filename 파일 크기가 0이 아닌지 확인
-u filename 파일 set-ser-id 비트가 설정되었는지 확인
-w filename 파일이 쓰기 가능한지 확인
-x filename 파일이 실행 가능한지 확인

#!/bin/bash
파일="./파일"
if [ -e $파일 ]; 그 다음에
echo "파일이 존재합니다"
또 다른
echo "파일이 존재하지 않습니다"
파이

코드: $ ls 모두 선택
파일.sh
$ ./파일.sh
파일이 없습니다
$ 터치 파일
$ls
파일 file.sh
$ ./파일.sh
파일이 존재

마찬가지로 예제에서 "while" 루프를 사용하여 파일이 존재하지 않는지 확인할 수 있습니다. 이 스크립트는 파일이 존재할 때까지 잠자기 상태입니다. Bash 부정 "!"에 유의하십시오. -e 옵션을 무효화(반전)합니다.

12. 주기
12.1. For 루프

#!/bin/bash
# 루프
f의 경우 $(ls /var/); 하다
에코 $f
완료

bash 명령줄에서 for 루프 실행:

코드: $(ls /var/)에서 f에 대한 모든 $ 선택; 에코 $f; 완료 코드: $(ls /var/)에서 f에 대한 모든 $ 선택; 에코 $f; 완료
백업
은닉처
크래시
계략
라이브러리
현지의
자물쇠
통나무
우편
고르다
운영
스풀
시간
www

12.2. 동안 루프

#!/bin/bash
카운트=6
# 동안 루프
동안 [ $COUNT -gt 0 ]; 하다

COUNT=COUNT-1로 하자
완료

코드: $ ./while_loop.sh 모두 선택
개수 값: 6
개수 값: 5
개수 값: 4
카운트 값: 3
개수 값: 2
개수 값: 1

12.3. 루프까지

#!/bin/bash
카운트=0
#루프까지
[ $COUNT -gt 5 ]까지; 하다
echo count 값: $COUNT
COUNT=COUNT+1
완료

코드: $ ./until_loop.sh 모두 선택
카운트 값: 0
개수 값: 1
개수 값: 2
카운트 값: 3
개수 값: 4
개수 값: 5

12.4. 암시적 조건이 있는 루프
다음 예에서 while 루프의 조건은 표준 입력의 존재입니다.
루프의 본문은 표준 출력에서 ​​읽기 명령으로 리디렉션할 항목이 있는 한 실행됩니다.

#!/bin/bash
# 이 스크립트는 공백을 찾아 제거합니다.
# 파일에서 밑줄로 대체
디렉토리 = "."
루프에서 출력을 리디렉션하여 읽기 명령으로 루프를 제어합니다.
$DIR 유형 f 찾기 | 파일을 읽는 동안; 하다
# POSIX 클래스 [:space:]를 사용하여 파일 이름에서 공백을 찾습니다.
if [[ "$ 파일" = *[[:공간:]]* ]]; 그 다음에
# 공백을 밑줄로 대체
mv "$file" `에코 $file | tr ' ' _'`
파이;
완료

코드: 모든 $ ls -1 선택
스크립트.sh
$ touch "공백이 있는 파일"
$ ls -1
공백이 있는 파일
스크립트.sh
$ ./스크립트.sh
$ ls -1
file_with_spaces
스크립트.sh

13. 기능

#!/bin/bash
# 함수는 임의의 순서로 선언할 수 있습니다.
함수 function_B(
에코 기능 B.
}
함수 function_A(
에코 $1
}
함수 function_D(
에코 기능 D.
}
함수_C(
에코 $1
}
# 함수 호출
# 함수 A에 매개변수 전달
function_A "함수 A."
기능_B
# 함수 C 함수에 매개변수 전달
function_C "함수 C."
기능_D

코드: 모든 $ ./functions.sh 선택
기능 가.
기능 B.
기능 다.
기능 D.

14. 연산자 선택 - 선택

#!/bin/bash
PS3='한 단어 선택:'
# 고르다
"linux" "bash" "scripting" "tutorial"에서 단어 선택
하다
echo "선택한 단어는 $word입니다."
# 중단, 그렇지 않으면 루프가 무한합니다.
부서지다
완료
0번 출구

코드: 모두 $ ./select.sh 선택
1) 리눅스
2) 배쉬
3) 스크립팅
4) 튜토리얼
한 단어를 선택하십시오: 4
선택한 단어는 다음과 같습니다. tutorial

15. 선택 연산자 - 케이스

#!/bin/bash
echo "선호하는 프로그래밍/스크립팅 언어는 무엇입니까?"
echo "1) 강타"
에코 "2) 펄"
에코 "3) 파이톤"
에코 "4) C++"
echo "5) 몰라!"
케이스를 읽다;
# 간단한 케이스 선택 구조
# 이 예에서 $case는 변수일 뿐입니다.
# 그렇게 부를 필요는 없습니다. 이것은 단지 예일 뿐입니다
$케이스
1) echo "bash를 선택했습니다.";;
2) echo "펄을 선택했습니다.";;
3) echo "파이톤을 선택하셨습니다.";;
4) echo "C++를 선택하셨습니다.";;
5) 출구
이삭

코드: 모두 $ ./case.sh 선택
선호하는 프로그래밍/스크립팅 언어는 무엇입니까?
1) 배쉬
2) 펄
3) 파이톤
4) C++
5) 모르겠다!
4
C++를 선택하셨습니다.

———————————————————————————-

더 자세한 정보는 여기와 같은 다양한 출처에서 얻을 수 있습니다.
원본: https://www.linuxconfig.org/Bash_scripting_Tutorial
https://ruslandh.narod.ru/howto_ru/Bash-Prog-Intro/
https://bug.cf1.ru/2005-03-17/programmin … -book.html

https://ubuntologia.ru/forum/viewtopic.php?f=109&t=2296

물론 Linux OS와 한 번 이상 통신하는 모든 사람들은 BASH 명령 셸을 처리했습니다(적어도 확실히 들었습니다). 그러나 BASH는 명령 셸일 뿐만 아니라 우수한 스크립팅 프로그래밍 언어이기도 합니다.
이 기사의 목적은 사용자에게 bash에 더 가깝게 소개하고 언어의 구문, 기본 기술 및 기능에 대해 이야기하여 일반 사용자도 간단한 스크립트를 빠르게 작성하여 매일(-주간, -월간) 일상적인 작업을 수행할 수 있도록 하는 것입니다. 또는 "무릎을 꿇고 » 디렉토리를 백업하는 스크립트를 작성하십시오.

소개

BASH - Bourne-Again SHell("reborn shell" 또는 "Bourne-Again SHell again"로 번역될 수 있음), Unix 계열 시스템, 특히 GNU/Linux에서 가장 널리 사용되는 명령 해석기입니다. 다음은 스크립트를 만드는 데 사용할 여러 내장 명령입니다.

for, while 또는 until 루프에서 이탈 중단
계속은 for, 또는 until 루프의 다음 반복을 실행합니다.
echo 표준 출력에 공백으로 구분된 인수를 인쇄합니다.
쉘에서 나가기
export는 인수를 환경의 자식 프로세스에 전달할 변수로 표시합니다.
해시는 다음에 호출될 때 조회되지 않도록 인수로 제공된 명령의 전체 경로 이름을 기억합니다.
kill 프로세스에 종료 신호를 보냅니다.
pwd는 현재 작업 디렉토리를 표시합니다.
read는 쉘 입력에서 한 줄을 읽고 지정된 변수에 값을 할당하는 데 사용합니다.\
return은 쉘 함수가 지정된 값으로 종료되도록 합니다.
shift는 위치 매개변수를 왼쪽으로 이동합니다.
테스트는 조건식을 평가합니다.
times는 쉘과 그 자손이 사용하는 사용자 이름과 시스템 시간을 출력합니다.
trap은 쉘이 신호를 수신할 때 실행할 명령을 지정합니다.
unset으로 인해 쉘 변수가 파괴됩니다.
wait는 자식 프로세스가 종료될 때까지 기다리고 종료 상태를 보고합니다.

물론 기본 제공 명령 외에도 프로세스에서 이미 알게 될 외부의 별도 프로그램 명령을 모두 사용할 것입니다.

처음부터 알아야 할 것

1. 모든 bash 스크립트는 다음 행으로 시작해야 합니다.

#!/bin/bash
이 줄에서 #! bash 인터프리터의 경로가 지정되어 있으므로 다른 곳에 설치한 경우(whereis bash를 입력하여 찾을 수 있음) 경로로 변경합니다.
2. 주석은 # 기호로 시작합니다(첫 번째 줄 제외).
3. bash에서 변수에는 유형이 없습니다(아래에서 설명합니다).

스크립트 변수 및 매개변수

분석할 작은 예를 보여 드리겠습니다.

#!/bin/bash
# bash 인터프리터를 저장할 위치 지정
parametr1=$1 # parametr1 변수를 스크립트의 첫 번째 매개변수 값으로 설정
script_name=$0 #script_name 변수를 스크립트 이름 값으로 설정
echo "이름이 $script_name이고 매개변수가 $parametr1인 스크립트를 실행했습니다." # echo 명령이 특정 문자열을 출력하고 변수는 $variable_name을 통해 액세스됩니다.
echo "$script_name이라는 이름의 스크립트를 $parametr1 매개변수로 실행했습니다." # 여기에서 다른 따옴표를 볼 수 있습니다. 차이점은 작은 따옴표에 변수 대체가 없다는 것입니다.
exit 0 #코드 0으로 종료(스크립트 완료)

[이메일 보호됨]:~$ ./test.sh 쿼리
qwerty 매개변수를 사용하여 ./test.sh라는 스크립트를 실행했습니다.
이름이 $script_name이고 매개변수가 $parametr1인 스크립트를 실행했습니다.

변수를 사용하고 매개변수를 스크립트에 전달하는 방법을 살펴보았으므로 이제 예약된 변수에 익숙해져야 합니다.

$DIRSTACK - 디렉토리 스택의 맨 위에 있는 내용
$EDITOR - 기본 텍스트 편집기
$EUID - 유효 UID. su 프로그램을 사용하여 다른 사용자로 명령을 실행한 경우 이 변수에는 해당 사용자의 UID가 포함되지만...
$UID - ...로그인 시에만 설정되는 실제 식별자를 포함합니다.
$FUNCNAME - 스크립트에 있는 현재 함수의 이름.
$GROUPS - 현재 사용자가 속한 그룹의 배열
$HOME - 사용자의 홈 디렉토리
$HOSTNAME - 호스트 이름
$HOSTTYPE - 호스트 아키텍처.
$LC_CTYPE - 문자 인코딩을 결정하는 내부 변수
$OLDPWD - 이전 작업 디렉토리
$OSTYPE - OS 유형
$PATH - 프로그램 검색 경로
$PPID - 상위 프로세스 ID
$SECONDS - 스크립트 실행 시간(초)
$# - 스크립트에 전달된 총 매개변수 수
$* - 스크립트에 전달된 모든 인수(문자열로 표시됨)
[이메일 보호됨]- 이전과 동일하지만 매개변수는 열에 표시됩니다.
$! - 백그라운드에서 실행 중인 마지막 프로세스의 PID
$$ - 스크립트 자체의 PID

자귀

조건 연산자는 프로그램을 작성해 본 적이 있는 거의 모든 사람에게 친숙하다고 생각합니다. bash에서 조건은 다음과 같이 작성됩니다. 방법(예시와 같이):
#!/bin/bash
source=$1 # 스크립트의 첫 번째 매개변수를 소스 변수에 넣습니다.
dest=$2 # 스크립트의 두 번째 매개변수를 dest 변수에 넣습니다.

If [[ "$source" -eq "$dest" ]] # 비교할 변수 이름을 인용합니다. -eq - "같음"을 나타내는 논리적 비교
then # 만약 그것들이 정말로 같다면,
echo "목적지 $dest와 소스 $source는 같은 파일입니다!" #오류 메시지를 표시하기 때문에 $source와 $dest는 같다
exit 1 # 오류와 함께 종료(1 - 오류 코드)
else # 같지 않은 경우
cp $source $dest # 그런 다음 cp 명령을 실행합니다. 소스를 대상으로 복사합니다.
echo "복사 성공!"
fi #조건의 끝을 나타냅니다.

스크립트 실행 결과:
[이메일 보호됨]:~$ ./primer2.sh 1 1
지원자 1과 출처 1은 같은 파일입니다!
[이메일 보호됨]:~$ ./primer2.sh 1 2
행복한 복사!

if-then-else 구조는 다음과 같이 사용됩니다.
만약에<команда или набор команд возвращающих код возврата(0 или 1)>
그 다음에
<если выражение после if истино, то выполняется этот блок>
또 다른
<если выражение после if ложно, тот этот>
구조 [[ , [ , test, (()) 또는 기타(또는 여러) Linux 명령은 반환 코드를 반환하는 명령으로 작동할 수 있습니다.
테스트 - 논리적 비교에 사용됩니다. 표현식 뒤에 닫는 대괄호 "]"가 필요합니다.
[ 테스트 명령의 동의어입니다.
[[ - "["의 확장 버전(버전 2.02 이후)(예제에서와 같이), || (또는), & (및). 닫는 대괄호 "]]"가 있어야 합니다.
(()) - 수학적 비교.
다음 형식의 다단계 조건을 작성하려면 다음을 수행하십시오.
만약에...
그 다음에 ....
또 다른
만약에 ....
그 다음에....
또 다른 ....

코드의 간결함과 가독성을 위해 다음 구조를 사용할 수 있습니다.
만약에..
그 다음에...
엘리프...
그 다음에...
엘리프...

자귀. 다중 선택

하나의 변수를 많은 매개변수와 비교해야 하는 경우에는 case 문을 사용하는 것이 더 편리합니다.
#!/bin/bash
echo "실행할 편집기 선택:"
echo "1 나노 실행"
echo "2 vi 프로그램 실행"
echo "3 emacs 프로그램 시작"
echo "4 종료"
read do #here 표준 입력에서 $doing 변수를 읽습니다.

케이스 $doing in
1)
/usr/bin/nano # $doing이 1이면 nano를 실행합니다.
;;
2)
/usr/bin/vi # $doing에 2가 포함되어 있으면 vi를 시작합니다.
;;
3)
/usr/bin/emacs # $doing에 3이 포함되어 있으면 emacs를 시작합니다.
;;
4)
0번 출구
;;
*) #케이스에 설명되지 않은 내용이 키보드에서 입력되면 다음을 수행합니다.
echo "잘못된 작업이 입력되었습니다."

Esac #end case 문.

작업 결과:
[이메일 보호됨]:~$ ./menu2.sh
실행할 편집기 선택:
1 나노 런칭
2 시작 vi
3 이맥스 실행
4 출구

숫자를 선택하고 Enter 키를 누르면 선택한 편집기가 시작됩니다(물론 모든 경로가 정확하고 이러한 편집기가 설치되어 있지 않은 경우).
다음은 if-then-else-fi 구문에 사용되는 논리 연산자 목록입니다.
-z # 행이 비어 있습니다.
-n # 문자열이 비어 있지 않습니다.
=, (==) # 문자열은 같음
!= # 문자열이 같지 않음
-eq # 같음
-ne # 같지 않음
-그,(<) # меньше
-르,(<=) # меньше или равно
-gt,(>) #더
-ge,(>=) #보다 크거나 같음
! #부울 표현식의 부정
-a,(&&) #논리적 AND
-o,(||) # 논리적 "OR"

우리는 기사에 과부하가 걸리지 않도록 언어의 기본과 조건을 알아 냈습니다. 나는 그것을 여러 부분으로 나눌 것입니다 (3이라고 가정 해 봅시다). 두 번째 부분에서는 루프 연산자와 수학 연산의 성능을 분석합니다.

상향:일부 버그 수정
상향: if-then-else 조건에 대한 부분 업데이트

Bash 셸에는 /bin 또는 /usr/bin 폴더에 없는 내장 명령이 있다는 것은 누구나 알고 있습니다. 그것들은 셸에 내장되어 함수로 실행됩니다. 이전 기사 중 하나에서 우리는 고려했습니다. 우리는 거기에서 거의 모든 것, 스크립트가 어떻게 생겼는지, 조건, 루프, 변수의 사용에 대해 논의했지만 함수에서 멈추지 않았습니다.

오늘 기사에서는 이 단점을 수정하겠습니다. 다른 프로그래밍 언어와 마찬가지로 Bash에는 매우 유용하게 사용할 수 있는 기능이 있습니다. bash 함수를 사용하는 방법, 작성하는 방법, 이러한 함수에서 라이브러리를 만드는 방법까지 살펴보겠습니다.

먼저 컨텍스트에서 함수가 무엇인지 이해해야 합니다. 기능은 특정 작업을 수행하는 하나의 이름으로 결합된 명령 집합입니다. 함수는 이름으로 호출되며 매개변수를 사용하고 작업 결과를 반환할 수 있습니다. 간단히 말해서 Bash 함수는 다른 프로그래밍 언어에서와 마찬가지로 작동합니다.

함수를 만드는 구문은 매우 간단합니다.

function_name() ( 명령 목록 )

함수 이름은 기존 명령 또는 함수와 일치하지 않아야 하며 함수 본문의 모든 명령은 새 줄에 작성됩니다.

간단한 기능

화면에 문자열을 출력하는 작은 함수를 작성해 보겠습니다.

$ vi function.sh

#!/bin/bash
printstr()(
echo "안녕하세요"
}
printstr

bash 함수 호출은 다른 명령과 마찬가지로 이름을 지정하여 수행됩니다. 실행을 위해 스크립트를 실행하고 그 전에 실행 권한을 부여해야 한다는 것을 잊지 마십시오.

chmod u+x function.sh

모든 것이 작동합니다. 이제 작업을 복잡하게 만들고 함수에 인수를 전달해 보겠습니다.

함수 인수

함수 인수는 호출할 때 전달되어야 하며 스크립트 인수와 같은 방식으로 읽힙니다. bash 매개변수를 사용하여 함수를 호출하는 구문은 다음과 같습니다.

function_name 인수1 인수2 ... 인수N

보시다시피 모든 것이 매우 간단합니다. 매개변수는 공백으로 구분됩니다. 이제 우리가 지정한 문자열을 출력하도록 함수를 개선해 보겠습니다.

!/bin/bash
printstr()(
에코 $1
}
printstr "안녕하세요"

여러 옵션을 사용할 수 있습니다.

!/bin/bash
printstr()(
에코 $1
에코 $2
에코 $3
에코 $5
}
printstr "arg1" "arg2" "arg3" "arg4" "arg5"

스택을 사용하여 C에서와 같이 인수를 추출하는 또 다른 방법이 있습니다. 첫 번째 인수를 가져온 다음 인수 스택 포인터를 1만큼 진행하고 첫 번째 인수를 다시 가져옵니다. 등등:

!/bin/bash
printstr()(
에코 $1
옮기다
에코 $1
옮기다
에코 $1
옮기다
에코 $1
}
printstr "arg1" "arg2" "arg3" "arg4"

함수의 결과 반환

bash 매개변수와 함께 함수를 사용할 수 있을 뿐만 아니라 작업 결과도 얻을 수 있습니다. 이를 위해 return 명령이 사용됩니다. 함수를 종료하고 반환 코드의 숫자 값을 반환합니다. 0에서 255 사이일 수 있습니다.

!/bin/bash
printstr()(
반환 134;
}
printstr
에코 $?

상태 코드가 아닌 bash 함수의 반환 값을 사용해야 하는 경우 echo를 사용합니다. 문자열은 터미널에 즉시 출력되지 않지만 함수의 결과로 반환되며 변수에 쓴 다음 사용할 수 있습니다.

!/bin/bash
printstr()(
에코 "테스트"
}
VAR=$(인쇄문자열)
에코 $VAR

내보내기 기능

선언 명령을 사용하여 스크립트 외부에서 함수를 사용할 수 있도록 할 수 있습니다.

!/bin/bash
printstr()(
echo "안녕하세요"
}
선언 -x -f printstr

그런 다음 소스 명령으로 스크립트를 실행합니다.

소스 function.sh
$printstr

재귀

재귀를 수행하기 위해 자체 내부에서 함수를 호출할 수 있습니다.

!/bin/bash
printstr()(
echo "안녕하세요"
printstr
}
printstr

재귀를 사용하여 실험할 수 있으며 많은 경우에 유용할 수 있습니다. 첫 번째 Bash 함수 호출을 수행하는 것을 기억하십시오.

함수의 지역 변수

함수에서 일반 변수를 선언하면 스크립트 전체에서 사용할 수 있으므로 함수 값을 반환하는 데 편리하지만 때로는 로컬 변수로 만들어야 할 수도 있습니다. 이를 위한 로컬 명령이 있습니다.

!/bin/bash
printstr()(
현지 VAR=$1
에코 $(변수)
}
printstr "Hello World"

함수 라이브러리

우리는 일부 bash 함수를 가져 와서 하나의 라이브러리로 결합하여 단일 명령으로 이러한 함수를 가져올 수 있습니다. 이는 함수 내보내기와 유사한 방식으로 수행됩니다. 먼저 라이브러리 파일을 생성해 보겠습니다.

테스트1()(
echo "Hello World from 1";
}
테스트2()(
echo "Hello World from 2";
}
테스트3()(
echo "Hello World from 3";
}

이제 우리의 기능을 사용할 스크립트를 생성해 보겠습니다. 소스 명령을 사용하거나 단순히 스크립트 이름을 지정하여 라이브러리를 가져올 수 있습니다.

!/bin/bash
소스 lib.sh
테스트1
테스트2
테스트3

결론

이 글에서 우리는 bash 함수를 어떻게 작성하고, 적용하고, 라이브러리로 결합하는지 살펴보았다. Bash에서 스크립트를 자주 작성하는 경우 이 정보가 유용할 것입니다. 각 스크립트에서 사용할 고유한 기능 세트를 생성하여 작업을 더 쉽게 만들 수 있습니다.