logo

쉘 스크립트 예

모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

쉘 스크립트란 무엇입니까?

음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.



쉘 스크립트 사용

다음은 Shell Script의 몇 가지 일반적인 용도입니다.

  • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
  • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
  • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

Linux의 쉘 스크립트 예

1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

배열 목록.정렬
오두막

오두막

이 예에서는 다음과 같습니다.

  • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

  • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
chmod +x myscript.sh>
  • 파일 이름을 사용하여 스크립트를 실행합니다.
./myscript.sh>

여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

vim myscript.sh>

#!/bin/bash
# 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
에코 techcodeview.com

이름을 새기다

이름을 새기다

`chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

434

에코 명령

이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

예를 들어:

#!/bin/bash
# 변수에 값 할당하기
이름=자예쉬
나이=21
$name $나이에코

설명:

  • name 변수에는 Jayesh라는 값이 할당됩니다.
  • 연령 변수에는 값 21이 할당됩니다.
  • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

435

6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash
# 사용자에게 이름을 묻습니다.
에코 이름이 뭐예요?
이름을 읽어보세요
# 사용자에게 인사
echo 안녕하세요, $name 님! 만나서 반가워요.

설명:

  • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
  • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
  • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
  • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
  • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

436

7) 쉘 스크립트에 주석을 어떻게 추가합니까?

쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

#!/bin/bash
# 스크립트의 목적을 설명하는 주석입니다.
에코 GFG

8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

#!/bin/bash
파일=example.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
echo 파일이 존재합니다: $file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
  4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
  5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
  7. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 찾기

파일 찾기

9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

  • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
  • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

#!/bin/bash

abcd=안녕하세요
echo '$abcd' # 출력: $abcd
echo $abcd # 출력: 안녕하세요

10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. , 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 은 첫 번째 인수를 나타내고 는 두 번째 인수를 나타냅니다.

예를 들어: `example.sh`에 스크립트 이름이 있는 경우

#!/bin/bash

에코 스크립트 이름:

모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

쉘 스크립트란 무엇입니까?

음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

쉘 스크립트 사용

다음은 Shell Script의 몇 가지 일반적인 용도입니다.

  • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
  • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
  • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

Linux의 쉘 스크립트 예

1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

오두막

오두막

이 예에서는 다음과 같습니다.

  • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

  • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
chmod +x myscript.sh>
  • 파일 이름을 사용하여 스크립트를 실행합니다.
./myscript.sh>

여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

vim myscript.sh>

#!/bin/bash
# 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
에코 techcodeview.com

이름을 새기다

이름을 새기다

`chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

434

에코 명령

이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

예를 들어:

#!/bin/bash
# 변수에 값 할당하기
이름=자예쉬
나이=21
$name $나이에코

설명:

  • name 변수에는 Jayesh라는 값이 할당됩니다.
  • 연령 변수에는 값 21이 할당됩니다.
  • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

435

6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash
# 사용자에게 이름을 묻습니다.
에코 이름이 뭐예요?
이름을 읽어보세요
# 사용자에게 인사
echo 안녕하세요, $name 님! 만나서 반가워요.

설명:

  • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
  • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
  • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
  • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
  • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

436

7) 쉘 스크립트에 주석을 어떻게 추가합니까?

쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

#!/bin/bash
# 스크립트의 목적을 설명하는 주석입니다.
에코 GFG

8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

#!/bin/bash
파일=example.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
echo 파일이 존재합니다: $file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
  4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
  5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
  7. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 찾기

파일 찾기

9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

  • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
  • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

#!/bin/bash

abcd=안녕하세요
echo '$abcd' # 출력: $abcd
echo $abcd # 출력: 안녕하세요

10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

예를 들어: `example.sh`에 스크립트 이름이 있는 경우

#!/bin/bash

에코 스크립트 이름: $0
echo 첫 번째 인수: $1
echo 두 번째 인수: $2

`.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

CLI 인수

CLI 인수

11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

과일 =(사과 바나나 체리 날짜)
${fruits[@]}의 과일에 대해; 하다
echo 현재 과일: $fruit
완료

설명:

`fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

  • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
  • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
  • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
  • do: 이 키워드는 루프 본문의 시작을 표시합니다.
  • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
  • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
for 루프

for 루프

12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

에코 숫자를 입력하세요(N):
N을 읽어라
합=0
for (( i=1; i<=$N; i++ )); 하다
합계=$((합계 + i))
완료
echo 1부터 $N까지의 정수 합계: $sum

설명:
스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

  1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
  2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
  3. 루프 내부에서는 다음과 같은 일이 발생합니다.
    • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
    • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
    • 조건이 true이면 루프 본문이 실행됩니다.
    • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
  4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
  5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
  6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

439

13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

스크립트 이름 `word_count.sh`를 만듭니다.

#!/bin/bash

echo 검색할 단어를 입력하세요:
target_word 읽기
echo 파일 이름을 입력하세요:
파일 이름 읽기
개수=$(grep -o -w $target_word $파일 이름 | wc -l)
echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

설명:

  • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
  • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
  • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
  • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
  • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
    • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
    • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
    • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
    • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

441

14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

  • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
  • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

if [ 조건 ]; 그 다음에
# 조건이 참일 때 실행할 명령어
elif [ 또 다른_조건 ]; 그 다음에
# another_condition이 true인 경우 실행할 명령(선택 사항)
또 다른
# 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
BE

설명:

  • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
  • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
  • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
  • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
  • fi = 조건 블록의 끝을 표시하는 키워드입니다.

16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

#!/bin/bash
파일=/home/jayeshkumar/jayesh.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
IFS= 읽기 -r 라인 동안; 하다
echo 줄 읽기: $line
# 여기에 처리 로직을 추가하세요
완료 <$file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
  4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
    • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
    • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
  5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
  6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
  7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
  8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
  10. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 읽기

파일 읽기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

#!/bin/bash
# 계승을 계산하는 함수를 정의합니다.
계산_팩토리얼() {
숫자=$1
사실=1
for ((i=1; i<=num; i++)); 하다
사실=$((사실 * i))
완료
에코 $사실
}
# 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
에코 숫자를 입력하세요:
input_num 읽기
# 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
계승_결과=$(calculate_factorial $input_num)
# 계승 결과를 표시합니다
echo $input_num의 계승은 다음과 같습니다: $factorial_result

설명:

  1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
  2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
  3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
  4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
  5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
  6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
  7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
  8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
계승

계승

18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

#!/bin/bash
정리() {
에코 스크립트가 중단되었습니다. 정리 수행 중…
# 여기에 정리 작업을 추가하세요
1번 출구
}
# Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
트랩 청소 SIGINT
# 스크립트의 나머지 부분
에코 실행 중…
잠 10
에코가 끝났습니다.

신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

설명:

  1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
  2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
  3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
  4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

446

19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

#!/bin/bash
input_file=input.txt
출력_파일=output.txt
$input_file 정렬 | 유니크> $output_file
echo 중복된 줄이 성공적으로 제거되었습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
  3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
  4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
  5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
  6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
중복라인 제거

중복라인 제거

여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

#!/bin/bash
# 임의의 비밀번호를 생성하는 함수
generate_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# 함수를 호출하고 생성된 비밀번호를 저장합니다.
비밀번호=$(generate_password)
echo 생성된 비밀번호: $password

참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
    • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
  3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
  4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

448

21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=/경로/to/your/디렉토리
total_size=$(du -csh $directory | grep total | awk '{print $1}')
echo $directory에 있는 총 파일 크기: $total_size

설명:

  1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
  3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
    • -c: 총계를 생성합니다.
    • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
    • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
  4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
  5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
  6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
  7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
총 파일 크기

총 파일 크기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

특징 `만약` 스테이프먼트 `elif` 문
목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

예를 들어 이해해 보겠습니다.

#!/bin/bash
숫자=5
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
또 다른
echo $number는 10보다 크지 않습니다.
BE
에코 ——–
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
elif [ $number -eq 10 ]; 그 다음에
echo $number는 10과 같습니다.
또 다른
echo $number가 10보다 작습니다.
BE

설명:

이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

if_elif 차이

if_elif 차이

23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

while 루프의 기본 구문은 다음과 같습니다.

동안 [ 조건 ]; 하다
# 실행할 명령
완료

설명:

  1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
  2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
  3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

예: 1부터 5까지의 숫자를 출력하고 싶다면

#!/bin/bash
카운터=1
동안 [ $counter -le 5 ]; 하다
에코 번호: $counter
카운터=$((카운터 + 1))
완료

설명:

  • 카운터 변수는 1로 설정됩니다.
  • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
  • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
  • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
while 루프

while 루프

24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

`find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에
echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE
echo $directory의 빈 파일:
$directory 찾기 -type f -empty

설명:

  1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
  2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
  3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
  4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
  5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
  6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
  7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
  8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
  10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
  11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
  12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
빈 파일 찾기

빈 파일 찾기

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

읽기 명령 구문:

read variable_name>

: 사용자로부터 이름을 입력받아 인쇄하려는 경우.

#!/bin/bash
echo 이름을 입력해주세요:
이름을 읽어보세요
echo 안녕하세요, $name 님!

453

이름 읽어 줘

요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에

echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE

CD $디렉토리 || 1번 출구

*에 있는 파일의 경우; 하다
if [ -f $file ]; 그 다음에
newname=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
BE
완료

설명:

  1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
  3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
  4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
  5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
  6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
  7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
  8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
  10. BE : 두 번째 if 문의 끝을 표시합니다.
  11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
  12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
  13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
  14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
  15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
  16. BE : 내부 if 문의 끝을 표시합니다.
  17. 완료 : 루프의 끝을 표시합니다.

454

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

  1. 산술 확장($((…)))
  2. expr 명령 사용
  3. let 명령 사용

다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

#!/bin/bash
숫자1=10
숫자2=5

#산술 확장 ($((…)))

결과=$((숫자1 + 숫자2))
에코 합계: $result

#expr 명령 사용

합계=$(expr $num1 + $num2)
에코 합계: $sum

#let 명령 사용

합계 = num1 + num2라고 합시다.
에코 합계: $sum

설명:

  1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
  3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
  4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
  5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
  6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
  7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
  8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
  9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
  10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
  11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
산수

산수

28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

#!/bin/bash
호스트=$1″
if [ -z $host ]; 그 다음에
에코 사용량: $0
1번 출구
BE
핑 -c 4 $호스트

만약 [ $? -eq 0]; 그 다음에
echo $host에 연결할 수 있습니다.
또 다른
echo $host에 연결할 수 없습니다.
BE

설명:

  1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
  2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
  3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
  4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

456

메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

#!/bin/bash
# 배열 선언
배열=(3 56 24 89 67)

# 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

최대=${배열[0]}

# 배열을 반복합니다.

${array[@]}의 숫자에 대해; 하다

# 각 요소를 현재 최대값과 비교합니다.

if ((숫자> 최대)); 그 다음에
최대=$num
BE
완료

# 최대값을 인쇄합니다

echo 배열의 최대 요소는 다음과 같습니다. $max

설명:

  1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
  2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
  3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
  4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
  5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
  6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
  7. ` 완료 `: `for` 루프가 닫혀 있습니다.
  8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
461

가장 큰 수

30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

#!/bin/bash

# 배열 선언

배열=(1 65 22 19 94)

# 합계를 저장할 변수를 초기화합니다.

합=0

# 배열을 반복하고 각 요소를 합계에 추가합니다.

${array[@]}의 숫자에 대해; 하다
오전=$((오전 + 오전))
완료

# 합계를 인쇄합니다

echo 배열 요소의 합계는 다음과 같습니다. $sum

설명:

` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

`echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

462

요소의 합

쉘 스크립트에 대해 더 알아보기

결론

우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.




echo 첫 번째 인수:
echo 두 번째 인수:

`.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

CLI 인수

CLI 인수

11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

과일 =(사과 바나나 체리 날짜)
${fruits[@]}의 과일에 대해; 하다
echo 현재 과일: $fruit
완료

설명:

`fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

  • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
  • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
  • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
  • do: 이 키워드는 루프 본문의 시작을 표시합니다.
  • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
  • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
for 루프

for 루프

12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

에코 숫자를 입력하세요(N):
N을 읽어라
합=0
for (( i=1; i<=$N; i++ )); 하다
합계=$((합계 + i))
완료
echo 1부터 $N까지의 정수 합계: $sum

설명:
스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

  1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
  2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
  3. 루프 내부에서는 다음과 같은 일이 발생합니다.
    • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
    • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
    • 조건이 true이면 루프 본문이 실행됩니다.
    • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
  4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
  5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
  6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

439

13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

스크립트 이름 `word_count.sh`를 만듭니다.

#!/bin/bash

echo 검색할 단어를 입력하세요:
target_word 읽기
echo 파일 이름을 입력하세요:
파일 이름 읽기
개수=$(grep -o -w $target_word $파일 이름 | wc -l)
echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

설명:

  • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
  • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
  • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
  • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
  • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
    • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
    • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
    • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
    • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

441

14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

  • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
  • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

if [ 조건 ]; 그 다음에
# 조건이 참일 때 실행할 명령어
elif [ 또 다른_조건 ]; 그 다음에
# another_condition이 true인 경우 실행할 명령(선택 사항)
또 다른
# 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
BE

설명:

  • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
  • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
  • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
  • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
  • fi = 조건 블록의 끝을 표시하는 키워드입니다.

16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

#!/bin/bash
파일=/home/jayeshkumar/jayesh.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
IFS= 읽기 -r 라인 동안; 하다
echo 줄 읽기: $line
# 여기에 처리 로직을 추가하세요
완료 <$file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
  4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
    • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
    • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
  5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
  6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
  7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
  8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
  10. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 읽기

파일 읽기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

#!/bin/bash
# 계승을 계산하는 함수를 정의합니다.
계산_팩토리얼() {
숫자=
사실=1
for ((i=1; i<=num; i++)); 하다
사실=$((사실 * i))
완료
에코 $사실
}
# 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
에코 숫자를 입력하세요:
input_num 읽기
# 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
계승_결과=$(calculate_factorial $input_num)
# 계승 결과를 표시합니다
echo $input_num의 계승은 다음과 같습니다: $factorial_result

설명:

  1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
  2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
  3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
  4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
  5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
  6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
  7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
  8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
계승

계승

18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

#!/bin/bash
정리() {
에코 스크립트가 중단되었습니다. 정리 수행 중…
# 여기에 정리 작업을 추가하세요
1번 출구
}
# Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
트랩 청소 SIGINT
# 스크립트의 나머지 부분
에코 실행 중…
잠 10
에코가 끝났습니다.

역참조 포인터

신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

설명:

  1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
  2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
  3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
  4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

446

19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

#!/bin/bash
input_file=input.txt
출력_파일=output.txt
$input_file 정렬 | 유니크> $output_file
echo 중복된 줄이 성공적으로 제거되었습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
  3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
  4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
  5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
  6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
중복라인 제거

중복라인 제거

여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

#!/bin/bash
# 임의의 비밀번호를 생성하는 함수
generate_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# 함수를 호출하고 생성된 비밀번호를 저장합니다.
비밀번호=$(generate_password)
echo 생성된 비밀번호: $password

참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
    • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
  3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
  4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

448

21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=/경로/to/your/디렉토리
total_size=$(du -csh $directory | grep total | awk '{print }')
echo $directory에 있는 총 파일 크기: $total_size

설명:

  1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
  3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
    • -c: 총계를 생성합니다.
    • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
    • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
  4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
  5. awk '{print }'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
  6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
  7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
총 파일 크기

총 파일 크기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

특징 `만약` 스테이프먼트 `elif` 문
목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

예를 들어 이해해 보겠습니다.

#!/bin/bash
숫자=5
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
또 다른
echo $number는 10보다 크지 않습니다.
BE
에코 ——–
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
elif [ $number -eq 10 ]; 그 다음에
echo $number는 10과 같습니다.
또 다른
echo $number가 10보다 작습니다.
BE

설명:

이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

if_elif 차이

if_elif 차이

23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

while 루프의 기본 구문은 다음과 같습니다.

동안 [ 조건 ]; 하다
# 실행할 명령
완료

설명:

  1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
  2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
  3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

예: 1부터 5까지의 숫자를 출력하고 싶다면

버킷 정렬

#!/bin/bash
카운터=1
동안 [ $counter -le 5 ]; 하다
에코 번호: $counter
카운터=$((카운터 + 1))
완료

설명:

  • 카운터 변수는 1로 설정됩니다.
  • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
  • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
  • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
while 루프

while 루프

24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

`find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

#!/bin/bash
디렉토리=″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량:

모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

쉘 스크립트란 무엇입니까?

음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

쉘 스크립트 사용

다음은 Shell Script의 몇 가지 일반적인 용도입니다.

  • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
  • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
  • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

Linux의 쉘 스크립트 예

1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

오두막

오두막

이 예에서는 다음과 같습니다.

  • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

  • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
chmod +x myscript.sh>
  • 파일 이름을 사용하여 스크립트를 실행합니다.
./myscript.sh>

여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

vim myscript.sh>

#!/bin/bash
# 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
에코 techcodeview.com

이름을 새기다

이름을 새기다

`chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

434

에코 명령

이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

예를 들어:

#!/bin/bash
# 변수에 값 할당하기
이름=자예쉬
나이=21
$name $나이에코

설명:

  • name 변수에는 Jayesh라는 값이 할당됩니다.
  • 연령 변수에는 값 21이 할당됩니다.
  • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

435

6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash
# 사용자에게 이름을 묻습니다.
에코 이름이 뭐예요?
이름을 읽어보세요
# 사용자에게 인사
echo 안녕하세요, $name 님! 만나서 반가워요.

설명:

  • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
  • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
  • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
  • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
  • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

436

7) 쉘 스크립트에 주석을 어떻게 추가합니까?

쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

#!/bin/bash
# 스크립트의 목적을 설명하는 주석입니다.
에코 GFG

8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

#!/bin/bash
파일=example.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
echo 파일이 존재합니다: $file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
  4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
  5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
  7. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 찾기

파일 찾기

9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

  • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
  • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

#!/bin/bash

abcd=안녕하세요
echo '$abcd' # 출력: $abcd
echo $abcd # 출력: 안녕하세요

10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

예를 들어: `example.sh`에 스크립트 이름이 있는 경우

#!/bin/bash

에코 스크립트 이름: $0
echo 첫 번째 인수: $1
echo 두 번째 인수: $2

`.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

CLI 인수

CLI 인수

11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

과일 =(사과 바나나 체리 날짜)
${fruits[@]}의 과일에 대해; 하다
echo 현재 과일: $fruit
완료

설명:

`fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

  • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
  • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
  • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
  • do: 이 키워드는 루프 본문의 시작을 표시합니다.
  • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
  • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
for 루프

for 루프

12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

에코 숫자를 입력하세요(N):
N을 읽어라
합=0
for (( i=1; i<=$N; i++ )); 하다
합계=$((합계 + i))
완료
echo 1부터 $N까지의 정수 합계: $sum

설명:
스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

  1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
  2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
  3. 루프 내부에서는 다음과 같은 일이 발생합니다.
    • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
    • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
    • 조건이 true이면 루프 본문이 실행됩니다.
    • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
  4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
  5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
  6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

439

13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

스크립트 이름 `word_count.sh`를 만듭니다.

#!/bin/bash

echo 검색할 단어를 입력하세요:
target_word 읽기
echo 파일 이름을 입력하세요:
파일 이름 읽기
개수=$(grep -o -w $target_word $파일 이름 | wc -l)
echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

설명:

  • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
  • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
  • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
  • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
  • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
    • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
    • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
    • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
    • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

441

14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

  • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
  • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

if [ 조건 ]; 그 다음에
# 조건이 참일 때 실행할 명령어
elif [ 또 다른_조건 ]; 그 다음에
# another_condition이 true인 경우 실행할 명령(선택 사항)
또 다른
# 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
BE

설명:

  • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
  • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
  • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
  • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
  • fi = 조건 블록의 끝을 표시하는 키워드입니다.

16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

#!/bin/bash
파일=/home/jayeshkumar/jayesh.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
IFS= 읽기 -r 라인 동안; 하다
echo 줄 읽기: $line
# 여기에 처리 로직을 추가하세요
완료 <$file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
  4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
    • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
    • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
  5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
  6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
  7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
  8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
  10. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 읽기

파일 읽기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

#!/bin/bash
# 계승을 계산하는 함수를 정의합니다.
계산_팩토리얼() {
숫자=$1
사실=1
for ((i=1; i<=num; i++)); 하다
사실=$((사실 * i))
완료
에코 $사실
}
# 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
에코 숫자를 입력하세요:
input_num 읽기
# 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
계승_결과=$(calculate_factorial $input_num)
# 계승 결과를 표시합니다
echo $input_num의 계승은 다음과 같습니다: $factorial_result

설명:

  1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
  2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
  3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
  4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
  5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
  6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
  7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
  8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
계승

계승

18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

#!/bin/bash
정리() {
에코 스크립트가 중단되었습니다. 정리 수행 중…
# 여기에 정리 작업을 추가하세요
1번 출구
}
# Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
트랩 청소 SIGINT
# 스크립트의 나머지 부분
에코 실행 중…
잠 10
에코가 끝났습니다.

신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

설명:

  1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
  2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
  3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
  4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

446

19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

#!/bin/bash
input_file=input.txt
출력_파일=output.txt
$input_file 정렬 | 유니크> $output_file
echo 중복된 줄이 성공적으로 제거되었습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
  3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
  4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
  5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
  6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
중복라인 제거

중복라인 제거

여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

#!/bin/bash
# 임의의 비밀번호를 생성하는 함수
generate_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# 함수를 호출하고 생성된 비밀번호를 저장합니다.
비밀번호=$(generate_password)
echo 생성된 비밀번호: $password

참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
    • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
  3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
  4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

448

21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=/경로/to/your/디렉토리
total_size=$(du -csh $directory | grep total | awk '{print $1}')
echo $directory에 있는 총 파일 크기: $total_size

설명:

  1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
  3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
    • -c: 총계를 생성합니다.
    • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
    • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
  4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
  5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
  6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
  7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
총 파일 크기

총 파일 크기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

특징 `만약` 스테이프먼트 `elif` 문
목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

예를 들어 이해해 보겠습니다.

#!/bin/bash
숫자=5
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
또 다른
echo $number는 10보다 크지 않습니다.
BE
에코 ——–
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
elif [ $number -eq 10 ]; 그 다음에
echo $number는 10과 같습니다.
또 다른
echo $number가 10보다 작습니다.
BE

설명:

이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

if_elif 차이

if_elif 차이

23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

while 루프의 기본 구문은 다음과 같습니다.

동안 [ 조건 ]; 하다
# 실행할 명령
완료

설명:

  1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
  2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
  3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

예: 1부터 5까지의 숫자를 출력하고 싶다면

#!/bin/bash
카운터=1
동안 [ $counter -le 5 ]; 하다
에코 번호: $counter
카운터=$((카운터 + 1))
완료

설명:

  • 카운터 변수는 1로 설정됩니다.
  • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
  • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
  • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
while 루프

while 루프

24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

`find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에
echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE
echo $directory의 빈 파일:
$directory 찾기 -type f -empty

설명:

  1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
  2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
  3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
  4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
  5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
  6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
  7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
  8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
  10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
  11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
  12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
빈 파일 찾기

빈 파일 찾기

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

읽기 명령 구문:

read variable_name>

: 사용자로부터 이름을 입력받아 인쇄하려는 경우.

#!/bin/bash
echo 이름을 입력해주세요:
이름을 읽어보세요
echo 안녕하세요, $name 님!

453

이름 읽어 줘

요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에

echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE

CD $디렉토리 || 1번 출구

*에 있는 파일의 경우; 하다
if [ -f $file ]; 그 다음에
newname=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
BE
완료

설명:

  1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
  3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
  4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
  5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
  6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
  7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
  8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
  10. BE : 두 번째 if 문의 끝을 표시합니다.
  11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
  12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
  13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
  14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
  15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
  16. BE : 내부 if 문의 끝을 표시합니다.
  17. 완료 : 루프의 끝을 표시합니다.

454

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

  1. 산술 확장($((…)))
  2. expr 명령 사용
  3. let 명령 사용

다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

#!/bin/bash
숫자1=10
숫자2=5

#산술 확장 ($((…)))

결과=$((숫자1 + 숫자2))
에코 합계: $result

#expr 명령 사용

합계=$(expr $num1 + $num2)
에코 합계: $sum

#let 명령 사용

합계 = num1 + num2라고 합시다.
에코 합계: $sum

설명:

  1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
  3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
  4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
  5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
  6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
  7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
  8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
  9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
  10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
  11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
산수

산수

28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

#!/bin/bash
호스트=$1″
if [ -z $host ]; 그 다음에
에코 사용량: $0
1번 출구
BE
핑 -c 4 $호스트

만약 [ $? -eq 0]; 그 다음에
echo $host에 연결할 수 있습니다.
또 다른
echo $host에 연결할 수 없습니다.
BE

설명:

  1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
  2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
  3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
  4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

456

메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

#!/bin/bash
# 배열 선언
배열=(3 56 24 89 67)

# 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

최대=${배열[0]}

# 배열을 반복합니다.

${array[@]}의 숫자에 대해; 하다

# 각 요소를 현재 최대값과 비교합니다.

if ((숫자> 최대)); 그 다음에
최대=$num
BE
완료

# 최대값을 인쇄합니다

echo 배열의 최대 요소는 다음과 같습니다. $max

설명:

  1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
  2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
  3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
  4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
  5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
  6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
  7. ` 완료 `: `for` 루프가 닫혀 있습니다.
  8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
461

가장 큰 수

30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

#!/bin/bash

# 배열 선언

배열=(1 65 22 19 94)

# 합계를 저장할 변수를 초기화합니다.

합=0

# 배열을 반복하고 각 요소를 합계에 추가합니다.

${array[@]}의 숫자에 대해; 하다
오전=$((오전 + 오전))
완료

# 합계를 인쇄합니다

echo 배열 요소의 합계는 다음과 같습니다. $sum

설명:

` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

`echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

462

요소의 합

쉘 스크립트에 대해 더 알아보기

결론

우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.




1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에
echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE
echo $directory의 빈 파일:
$directory 찾기 -type f -empty

설명:

  1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
  2. ` 디렉토리=″ `: 이 줄은 첫 번째 명령줄 인수(로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
  3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
  4. ` 에코 사용량:

    모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

    하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

    쉘 스크립트란 무엇입니까?

    음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

    쉘 스크립트 사용

    다음은 Shell Script의 몇 가지 일반적인 용도입니다.

    • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
    • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
    • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

    Linux의 쉘 스크립트 예

    1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

    그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

    예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

    오두막

    오두막

    이 예에서는 다음과 같습니다.

    • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

    2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

    명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

    • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
    chmod +x myscript.sh>
    • 파일 이름을 사용하여 스크립트를 실행합니다.
    ./myscript.sh>

    여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

    3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

    스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

    vim myscript.sh>

    #!/bin/bash
    # 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
    에코 techcodeview.com

    이름을 새기다

    이름을 새기다

    `chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

    4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

    그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

    434

    에코 명령

    이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

    5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

    할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

    예를 들어:

    #!/bin/bash
    # 변수에 값 할당하기
    이름=자예쉬
    나이=21
    $name $나이에코

    설명:

    • name 변수에는 Jayesh라는 값이 할당됩니다.
    • 연령 변수에는 값 21이 할당됩니다.
    • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

    435

    6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash
    # 사용자에게 이름을 묻습니다.
    에코 이름이 뭐예요?
    이름을 읽어보세요
    # 사용자에게 인사
    echo 안녕하세요, $name 님! 만나서 반가워요.

    설명:

    • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
    • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
    • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
    • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
    • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

    436

    7) 쉘 스크립트에 주석을 어떻게 추가합니까?

    쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

    #!/bin/bash
    # 스크립트의 목적을 설명하는 주석입니다.
    에코 GFG

    8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

    다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

    #!/bin/bash
    파일=example.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    echo 파일이 존재합니다: $file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
    4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
    5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
    7. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 찾기

    파일 찾기

    9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

    작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

    • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
    • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

    #!/bin/bash

    abcd=안녕하세요
    echo '$abcd' # 출력: $abcd
    echo $abcd # 출력: 안녕하세요

    10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

    명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

    예를 들어: `example.sh`에 스크립트 이름이 있는 경우

    #!/bin/bash

    에코 스크립트 이름: $0
    echo 첫 번째 인수: $1
    echo 두 번째 인수: $2

    `.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

    CLI 인수

    CLI 인수

    11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    과일 =(사과 바나나 체리 날짜)
    ${fruits[@]}의 과일에 대해; 하다
    echo 현재 과일: $fruit
    완료

    설명:

    `fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

    • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
    • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
    • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
    • do: 이 키워드는 루프 본문의 시작을 표시합니다.
    • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
    • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
    for 루프

    for 루프

    12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    에코 숫자를 입력하세요(N):
    N을 읽어라
    합=0
    for (( i=1; i<=$N; i++ )); 하다
    합계=$((합계 + i))
    완료
    echo 1부터 $N까지의 정수 합계: $sum

    설명:
    스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

    1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
    2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
    3. 루프 내부에서는 다음과 같은 일이 발생합니다.
      • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
      • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
      • 조건이 true이면 루프 본문이 실행됩니다.
      • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
    4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
    5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
    6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

    439

    13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

    스크립트 이름 `word_count.sh`를 만듭니다.

    #!/bin/bash

    echo 검색할 단어를 입력하세요:
    target_word 읽기
    echo 파일 이름을 입력하세요:
    파일 이름 읽기
    개수=$(grep -o -w $target_word $파일 이름 | wc -l)
    echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

    설명:

    • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
    • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
    • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
    • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
    • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
      • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
      • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
      • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
      • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

    441

    14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

    표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

    • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
    • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

    15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

    쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

    쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

    if [ 조건 ]; 그 다음에
    # 조건이 참일 때 실행할 명령어
    elif [ 또 다른_조건 ]; 그 다음에
    # another_condition이 true인 경우 실행할 명령(선택 사항)
    또 다른
    # 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
    BE

    설명:

    • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
    • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
    • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
    • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
    • fi = 조건 블록의 끝을 표시하는 키워드입니다.

    16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

    에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

    #!/bin/bash
    파일=/home/jayeshkumar/jayesh.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    IFS= 읽기 -r 라인 동안; 하다
    echo 줄 읽기: $line
    # 여기에 처리 로직을 추가하세요
    완료 <$file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
    4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
      • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
      • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
    5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
    6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
    7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
    8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
    10. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 읽기

    파일 읽기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

    17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

    다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

    #!/bin/bash
    # 계승을 계산하는 함수를 정의합니다.
    계산_팩토리얼() {
    숫자=$1
    사실=1
    for ((i=1; i<=num; i++)); 하다
    사실=$((사실 * i))
    완료
    에코 $사실
    }
    # 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
    에코 숫자를 입력하세요:
    input_num 읽기
    # 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
    계승_결과=$(calculate_factorial $input_num)
    # 계승 결과를 표시합니다
    echo $input_num의 계승은 다음과 같습니다: $factorial_result

    설명:

    1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
    2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
    3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
    4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
    5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
    6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
    7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
    8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
    계승

    계승

    18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

    쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

    #!/bin/bash
    정리() {
    에코 스크립트가 중단되었습니다. 정리 수행 중…
    # 여기에 정리 작업을 추가하세요
    1번 출구
    }
    # Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
    트랩 청소 SIGINT
    # 스크립트의 나머지 부분
    에코 실행 중…
    잠 10
    에코가 끝났습니다.

    신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

    설명:

    1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
    2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
    3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
    4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

    446

    19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

    다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

    #!/bin/bash
    input_file=input.txt
    출력_파일=output.txt
    $input_file 정렬 | 유니크> $output_file
    echo 중복된 줄이 성공적으로 제거되었습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
    3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
    4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
    5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
    6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
    중복라인 제거

    중복라인 제거

    여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

    20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

    안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

    #!/bin/bash
    # 임의의 비밀번호를 생성하는 함수
    generate_password() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # 함수를 호출하고 생성된 비밀번호를 저장합니다.
    비밀번호=$(generate_password)
    echo 생성된 비밀번호: $password

    참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
      • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
    3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
    4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

    448

    21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=/경로/to/your/디렉토리
    total_size=$(du -csh $directory | grep total | awk '{print $1}')
    echo $directory에 있는 총 파일 크기: $total_size

    설명:

    1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
    3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
      • -c: 총계를 생성합니다.
      • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
      • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
    4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
    5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
    6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
    7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
    총 파일 크기

    총 파일 크기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

    22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

    특징 `만약` 스테이프먼트 `elif` 문
    목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
    용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
    블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
    실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
    중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

    예를 들어 이해해 보겠습니다.

    #!/bin/bash
    숫자=5
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    또 다른
    echo $number는 10보다 크지 않습니다.
    BE
    에코 ——–
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    elif [ $number -eq 10 ]; 그 다음에
    echo $number는 10과 같습니다.
    또 다른
    echo $number가 10보다 작습니다.
    BE

    설명:

    이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

    if_elif 차이

    if_elif 차이

    23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

    while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

    while 루프의 기본 구문은 다음과 같습니다.

    동안 [ 조건 ]; 하다
    # 실행할 명령
    완료

    설명:

    1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
    2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
    3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

    예: 1부터 5까지의 숫자를 출력하고 싶다면

    #!/bin/bash
    카운터=1
    동안 [ $counter -le 5 ]; 하다
    에코 번호: $counter
    카운터=$((카운터 + 1))
    완료

    설명:

    • 카운터 변수는 1로 설정됩니다.
    • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
    • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
    • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
    while 루프

    while 루프

    24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

    `find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에
    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE
    echo $directory의 빈 파일:
    $directory 찾기 -type f -empty

    설명:

    1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
    2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
    3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
    4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
    5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
    6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
    7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
    8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
    10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
    11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
    12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
    빈 파일 찾기

    빈 파일 찾기

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

    25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

    쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

    읽기 명령 구문:

    read variable_name>

    : 사용자로부터 이름을 입력받아 인쇄하려는 경우.

    #!/bin/bash
    echo 이름을 입력해주세요:
    이름을 읽어보세요
    echo 안녕하세요, $name 님!

    453

    이름 읽어 줘

    요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

    26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에

    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE

    CD $디렉토리 || 1번 출구

    *에 있는 파일의 경우; 하다
    if [ -f $file ]; 그 다음에
    newname=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    BE
    완료

    설명:

    1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
    3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
    4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
    5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
    6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
    7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
    8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
    10. BE : 두 번째 if 문의 끝을 표시합니다.
    11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
    12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
    13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
    14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
    15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
    16. BE : 내부 if 문의 끝을 표시합니다.
    17. 완료 : 루프의 끝을 표시합니다.

    454

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

    27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

    다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

    1. 산술 확장($((…)))
    2. expr 명령 사용
    3. let 명령 사용

    다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

    #!/bin/bash
    숫자1=10
    숫자2=5

    #산술 확장 ($((…)))

    결과=$((숫자1 + 숫자2))
    에코 합계: $result

    #expr 명령 사용

    합계=$(expr $num1 + $num2)
    에코 합계: $sum

    #let 명령 사용

    합계 = num1 + num2라고 합시다.
    에코 합계: $sum

    설명:

    1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
    3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
    4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
    5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
    6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
    7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
    8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
    10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
    11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    산수

    산수

    28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

    다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

    #!/bin/bash
    호스트=$1″
    if [ -z $host ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE
    핑 -c 4 $호스트

    만약 [ $? -eq 0]; 그 다음에
    echo $host에 연결할 수 있습니다.
    또 다른
    echo $host에 연결할 수 없습니다.
    BE

    설명:

    1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
    2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
    3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
    4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

    456

    메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

    29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

    다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

    #!/bin/bash
    # 배열 선언
    배열=(3 56 24 89 67)

    # 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

    최대=${배열[0]}

    # 배열을 반복합니다.

    ${array[@]}의 숫자에 대해; 하다

    # 각 요소를 현재 최대값과 비교합니다.

    if ((숫자> 최대)); 그 다음에
    최대=$num
    BE
    완료

    # 최대값을 인쇄합니다

    echo 배열의 최대 요소는 다음과 같습니다. $max

    설명:

    1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
    2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
    3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
    4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
    5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
    6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
    7. ` 완료 `: `for` 루프가 닫혀 있습니다.
    8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
    461

    가장 큰 수

    30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

    #!/bin/bash

    # 배열 선언

    배열=(1 65 22 19 94)

    # 합계를 저장할 변수를 초기화합니다.

    합=0

    # 배열을 반복하고 각 요소를 합계에 추가합니다.

    ${array[@]}의 숫자에 대해; 하다
    오전=$((오전 + 오전))
    완료

    # 합계를 인쇄합니다

    echo 배열 요소의 합계는 다음과 같습니다. $sum

    설명:

    ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

    ` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

    ` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

    ` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

    ` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

    ` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

    `echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

    462

    요소의 합

    쉘 스크립트에 대해 더 알아보기

    결론

    우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.



    `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 `

    모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

    하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

    쉘 스크립트란 무엇입니까?

    음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

    쉘 스크립트 사용

    다음은 Shell Script의 몇 가지 일반적인 용도입니다.

    • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
    • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
    • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

    Linux의 쉘 스크립트 예

    1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

    그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

    예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

    오두막

    오두막

    이 예에서는 다음과 같습니다.

    • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

    2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

    명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

    • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
    chmod +x myscript.sh>
    • 파일 이름을 사용하여 스크립트를 실행합니다.
    ./myscript.sh>

    여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

    3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

    스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

    vim myscript.sh>

    #!/bin/bash
    # 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
    에코 techcodeview.com

    이름을 새기다

    이름을 새기다

    `chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

    4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

    그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

    434

    에코 명령

    이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

    5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

    할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

    예를 들어:

    #!/bin/bash
    # 변수에 값 할당하기
    이름=자예쉬
    나이=21
    $name $나이에코

    설명:

    • name 변수에는 Jayesh라는 값이 할당됩니다.
    • 연령 변수에는 값 21이 할당됩니다.
    • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

    435

    6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash
    # 사용자에게 이름을 묻습니다.
    에코 이름이 뭐예요?
    이름을 읽어보세요
    # 사용자에게 인사
    echo 안녕하세요, $name 님! 만나서 반가워요.

    설명:

    • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
    • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
    • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
    • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
    • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

    436

    7) 쉘 스크립트에 주석을 어떻게 추가합니까?

    쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

    #!/bin/bash
    # 스크립트의 목적을 설명하는 주석입니다.
    에코 GFG

    8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

    다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

    #!/bin/bash
    파일=example.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    echo 파일이 존재합니다: $file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
    4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
    5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
    7. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 찾기

    파일 찾기

    9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

    작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

    • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
    • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

    #!/bin/bash

    abcd=안녕하세요
    echo '$abcd' # 출력: $abcd
    echo $abcd # 출력: 안녕하세요

    10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

    명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

    예를 들어: `example.sh`에 스크립트 이름이 있는 경우

    #!/bin/bash

    에코 스크립트 이름: $0
    echo 첫 번째 인수: $1
    echo 두 번째 인수: $2

    `.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

    CLI 인수

    CLI 인수

    11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    과일 =(사과 바나나 체리 날짜)
    ${fruits[@]}의 과일에 대해; 하다
    echo 현재 과일: $fruit
    완료

    설명:

    `fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

    • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
    • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
    • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
    • do: 이 키워드는 루프 본문의 시작을 표시합니다.
    • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
    • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
    for 루프

    for 루프

    12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    에코 숫자를 입력하세요(N):
    N을 읽어라
    합=0
    for (( i=1; i<=$N; i++ )); 하다
    합계=$((합계 + i))
    완료
    echo 1부터 $N까지의 정수 합계: $sum

    설명:
    스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

    1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
    2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
    3. 루프 내부에서는 다음과 같은 일이 발생합니다.
      • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
      • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
      • 조건이 true이면 루프 본문이 실행됩니다.
      • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
    4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
    5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
    6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

    439

    13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

    스크립트 이름 `word_count.sh`를 만듭니다.

    #!/bin/bash

    echo 검색할 단어를 입력하세요:
    target_word 읽기
    echo 파일 이름을 입력하세요:
    파일 이름 읽기
    개수=$(grep -o -w $target_word $파일 이름 | wc -l)
    echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

    설명:

    • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
    • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
    • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
    • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
    • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
      • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
      • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
      • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
      • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

    441

    14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

    표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

    • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
    • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

    15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

    쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

    쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

    if [ 조건 ]; 그 다음에
    # 조건이 참일 때 실행할 명령어
    elif [ 또 다른_조건 ]; 그 다음에
    # another_condition이 true인 경우 실행할 명령(선택 사항)
    또 다른
    # 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
    BE

    설명:

    • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
    • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
    • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
    • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
    • fi = 조건 블록의 끝을 표시하는 키워드입니다.

    16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

    에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

    #!/bin/bash
    파일=/home/jayeshkumar/jayesh.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    IFS= 읽기 -r 라인 동안; 하다
    echo 줄 읽기: $line
    # 여기에 처리 로직을 추가하세요
    완료 <$file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
    4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
      • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
      • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
    5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
    6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
    7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
    8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
    10. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 읽기

    파일 읽기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

    17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

    다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

    #!/bin/bash
    # 계승을 계산하는 함수를 정의합니다.
    계산_팩토리얼() {
    숫자=$1
    사실=1
    for ((i=1; i<=num; i++)); 하다
    사실=$((사실 * i))
    완료
    에코 $사실
    }
    # 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
    에코 숫자를 입력하세요:
    input_num 읽기
    # 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
    계승_결과=$(calculate_factorial $input_num)
    # 계승 결과를 표시합니다
    echo $input_num의 계승은 다음과 같습니다: $factorial_result

    설명:

    1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
    2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
    3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
    4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
    5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
    6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
    7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
    8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
    계승

    계승

    18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

    쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

    #!/bin/bash
    정리() {
    에코 스크립트가 중단되었습니다. 정리 수행 중…
    # 여기에 정리 작업을 추가하세요
    1번 출구
    }
    # Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
    트랩 청소 SIGINT
    # 스크립트의 나머지 부분
    에코 실행 중…
    잠 10
    에코가 끝났습니다.

    신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

    설명:

    1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
    2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
    3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
    4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

    446

    19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

    다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

    #!/bin/bash
    input_file=input.txt
    출력_파일=output.txt
    $input_file 정렬 | 유니크> $output_file
    echo 중복된 줄이 성공적으로 제거되었습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
    3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
    4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
    5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
    6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
    중복라인 제거

    중복라인 제거

    여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

    20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

    안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

    #!/bin/bash
    # 임의의 비밀번호를 생성하는 함수
    generate_password() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # 함수를 호출하고 생성된 비밀번호를 저장합니다.
    비밀번호=$(generate_password)
    echo 생성된 비밀번호: $password

    참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
      • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
    3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
    4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

    448

    21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=/경로/to/your/디렉토리
    total_size=$(du -csh $directory | grep total | awk '{print $1}')
    echo $directory에 있는 총 파일 크기: $total_size

    설명:

    1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
    3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
      • -c: 총계를 생성합니다.
      • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
      • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
    4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
    5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
    6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
    7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
    총 파일 크기

    총 파일 크기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

    22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

    특징 `만약` 스테이프먼트 `elif` 문
    목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
    용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
    블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
    실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
    중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

    예를 들어 이해해 보겠습니다.

    #!/bin/bash
    숫자=5
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    또 다른
    echo $number는 10보다 크지 않습니다.
    BE
    에코 ——–
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    elif [ $number -eq 10 ]; 그 다음에
    echo $number는 10과 같습니다.
    또 다른
    echo $number가 10보다 작습니다.
    BE

    설명:

    이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

    if_elif 차이

    if_elif 차이

    23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

    while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

    while 루프의 기본 구문은 다음과 같습니다.

    동안 [ 조건 ]; 하다
    # 실행할 명령
    완료

    설명:

    1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
    2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
    3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

    예: 1부터 5까지의 숫자를 출력하고 싶다면

    #!/bin/bash
    카운터=1
    동안 [ $counter -le 5 ]; 하다
    에코 번호: $counter
    카운터=$((카운터 + 1))
    완료

    설명:

    • 카운터 변수는 1로 설정됩니다.
    • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
    • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
    • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
    while 루프

    while 루프

    24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

    `find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에
    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE
    echo $directory의 빈 파일:
    $directory 찾기 -type f -empty

    설명:

    1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
    2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
    3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
    4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
    5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
    6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
    7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
    8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
    10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
    11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
    12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
    빈 파일 찾기

    빈 파일 찾기

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

    25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

    쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

    읽기 명령 구문:

    read variable_name>

    : 사용자로부터 이름을 입력받아 인쇄하려는 경우.

    #!/bin/bash
    echo 이름을 입력해주세요:
    이름을 읽어보세요
    echo 안녕하세요, $name 님!

    453

    이름 읽어 줘

    요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

    26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에

    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE

    CD $디렉토리 || 1번 출구

    *에 있는 파일의 경우; 하다
    if [ -f $file ]; 그 다음에
    newname=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    BE
    완료

    설명:

    1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
    3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
    4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
    5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
    6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
    7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
    8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
    10. BE : 두 번째 if 문의 끝을 표시합니다.
    11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
    12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
    13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
    14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
    15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
    16. BE : 내부 if 문의 끝을 표시합니다.
    17. 완료 : 루프의 끝을 표시합니다.

    454

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

    27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

    다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

    1. 산술 확장($((…)))
    2. expr 명령 사용
    3. let 명령 사용

    다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

    #!/bin/bash
    숫자1=10
    숫자2=5

    #산술 확장 ($((…)))

    결과=$((숫자1 + 숫자2))
    에코 합계: $result

    #expr 명령 사용

    합계=$(expr $num1 + $num2)
    에코 합계: $sum

    #let 명령 사용

    합계 = num1 + num2라고 합시다.
    에코 합계: $sum

    설명:

    1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
    3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
    4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
    5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
    6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
    7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
    8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
    10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
    11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    산수

    산수

    28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

    다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

    #!/bin/bash
    호스트=$1″
    if [ -z $host ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE
    핑 -c 4 $호스트

    만약 [ $? -eq 0]; 그 다음에
    echo $host에 연결할 수 있습니다.
    또 다른
    echo $host에 연결할 수 없습니다.
    BE

    설명:

    1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
    2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
    3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
    4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

    456

    메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

    29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

    다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

    #!/bin/bash
    # 배열 선언
    배열=(3 56 24 89 67)

    # 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

    최대=${배열[0]}

    # 배열을 반복합니다.

    ${array[@]}의 숫자에 대해; 하다

    # 각 요소를 현재 최대값과 비교합니다.

    if ((숫자> 최대)); 그 다음에
    최대=$num
    BE
    완료

    # 최대값을 인쇄합니다

    echo 배열의 최대 요소는 다음과 같습니다. $max

    설명:

    1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
    2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
    3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
    4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
    5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
    6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
    7. ` 완료 `: `for` 루프가 닫혀 있습니다.
    8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
    461

    가장 큰 수

    30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

    #!/bin/bash

    # 배열 선언

    배열=(1 65 22 19 94)

    # 합계를 저장할 변수를 초기화합니다.

    합=0

    # 배열을 반복하고 각 요소를 합계에 추가합니다.

    ${array[@]}의 숫자에 대해; 하다
    오전=$((오전 + 오전))
    완료

    # 합계를 인쇄합니다

    echo 배열 요소의 합계는 다음과 같습니다. $sum

    설명:

    ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

    ` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

    ` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

    ` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

    ` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

    ` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

    `echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

    462

    요소의 합

    쉘 스크립트에 대해 더 알아보기

    결론

    우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.



    `는 스크립트 이름을 나타냅니다.
  5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
  6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
  7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
  8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
  10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
  11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
  12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
빈 파일 찾기

빈 파일 찾기

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

읽기 명령 구문:

read variable_name>

: 사용자로부터 이름을 입력받아 인쇄하려는 경우.

#!/bin/bash
echo 이름을 입력해주세요:
이름을 읽어보세요
echo 안녕하세요, $name 님!

453

이름 읽어 줘

요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량:

모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

쉘 스크립트란 무엇입니까?

음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

쉘 스크립트 사용

다음은 Shell Script의 몇 가지 일반적인 용도입니다.

  • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
  • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
  • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

Linux의 쉘 스크립트 예

1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

오두막

오두막

이 예에서는 다음과 같습니다.

  • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

  • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
chmod +x myscript.sh>
  • 파일 이름을 사용하여 스크립트를 실행합니다.
./myscript.sh>

여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

vim myscript.sh>

#!/bin/bash
# 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
에코 techcodeview.com

이름을 새기다

이름을 새기다

`chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

434

에코 명령

이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

예를 들어:

#!/bin/bash
# 변수에 값 할당하기
이름=자예쉬
나이=21
$name $나이에코

설명:

  • name 변수에는 Jayesh라는 값이 할당됩니다.
  • 연령 변수에는 값 21이 할당됩니다.
  • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

435

6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash
# 사용자에게 이름을 묻습니다.
에코 이름이 뭐예요?
이름을 읽어보세요
# 사용자에게 인사
echo 안녕하세요, $name 님! 만나서 반가워요.

설명:

  • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
  • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
  • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
  • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
  • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

436

7) 쉘 스크립트에 주석을 어떻게 추가합니까?

쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

#!/bin/bash
# 스크립트의 목적을 설명하는 주석입니다.
에코 GFG

8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

#!/bin/bash
파일=example.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
echo 파일이 존재합니다: $file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
  4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
  5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
  7. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 찾기

파일 찾기

9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

  • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
  • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

#!/bin/bash

abcd=안녕하세요
echo '$abcd' # 출력: $abcd
echo $abcd # 출력: 안녕하세요

10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

예를 들어: `example.sh`에 스크립트 이름이 있는 경우

#!/bin/bash

에코 스크립트 이름: $0
echo 첫 번째 인수: $1
echo 두 번째 인수: $2

`.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

CLI 인수

CLI 인수

11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

과일 =(사과 바나나 체리 날짜)
${fruits[@]}의 과일에 대해; 하다
echo 현재 과일: $fruit
완료

설명:

`fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

  • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
  • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
  • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
  • do: 이 키워드는 루프 본문의 시작을 표시합니다.
  • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
  • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
for 루프

for 루프

12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

에코 숫자를 입력하세요(N):
N을 읽어라
합=0
for (( i=1; i<=$N; i++ )); 하다
합계=$((합계 + i))
완료
echo 1부터 $N까지의 정수 합계: $sum

설명:
스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

  1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
  2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
  3. 루프 내부에서는 다음과 같은 일이 발생합니다.
    • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
    • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
    • 조건이 true이면 루프 본문이 실행됩니다.
    • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
  4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
  5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
  6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

439

13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

스크립트 이름 `word_count.sh`를 만듭니다.

#!/bin/bash

echo 검색할 단어를 입력하세요:
target_word 읽기
echo 파일 이름을 입력하세요:
파일 이름 읽기
개수=$(grep -o -w $target_word $파일 이름 | wc -l)
echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

설명:

  • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
  • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
  • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
  • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
  • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
    • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
    • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
    • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
    • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

441

14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

  • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
  • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

if [ 조건 ]; 그 다음에
# 조건이 참일 때 실행할 명령어
elif [ 또 다른_조건 ]; 그 다음에
# another_condition이 true인 경우 실행할 명령(선택 사항)
또 다른
# 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
BE

설명:

  • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
  • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
  • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
  • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
  • fi = 조건 블록의 끝을 표시하는 키워드입니다.

16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

#!/bin/bash
파일=/home/jayeshkumar/jayesh.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
IFS= 읽기 -r 라인 동안; 하다
echo 줄 읽기: $line
# 여기에 처리 로직을 추가하세요
완료 <$file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
  4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
    • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
    • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
  5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
  6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
  7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
  8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
  10. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 읽기

파일 읽기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

#!/bin/bash
# 계승을 계산하는 함수를 정의합니다.
계산_팩토리얼() {
숫자=$1
사실=1
for ((i=1; i<=num; i++)); 하다
사실=$((사실 * i))
완료
에코 $사실
}
# 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
에코 숫자를 입력하세요:
input_num 읽기
# 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
계승_결과=$(calculate_factorial $input_num)
# 계승 결과를 표시합니다
echo $input_num의 계승은 다음과 같습니다: $factorial_result

설명:

  1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
  2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
  3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
  4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
  5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
  6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
  7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
  8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
계승

계승

18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

#!/bin/bash
정리() {
에코 스크립트가 중단되었습니다. 정리 수행 중…
# 여기에 정리 작업을 추가하세요
1번 출구
}
# Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
트랩 청소 SIGINT
# 스크립트의 나머지 부분
에코 실행 중…
잠 10
에코가 끝났습니다.

신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

설명:

  1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
  2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
  3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
  4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

446

19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

#!/bin/bash
input_file=input.txt
출력_파일=output.txt
$input_file 정렬 | 유니크> $output_file
echo 중복된 줄이 성공적으로 제거되었습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
  3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
  4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
  5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
  6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
중복라인 제거

중복라인 제거

여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

#!/bin/bash
# 임의의 비밀번호를 생성하는 함수
generate_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# 함수를 호출하고 생성된 비밀번호를 저장합니다.
비밀번호=$(generate_password)
echo 생성된 비밀번호: $password

참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
    • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
  3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
  4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

448

21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=/경로/to/your/디렉토리
total_size=$(du -csh $directory | grep total | awk '{print $1}')
echo $directory에 있는 총 파일 크기: $total_size

설명:

  1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
  3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
    • -c: 총계를 생성합니다.
    • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
    • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
  4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
  5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
  6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
  7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
총 파일 크기

총 파일 크기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

특징 `만약` 스테이프먼트 `elif` 문
목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

예를 들어 이해해 보겠습니다.

#!/bin/bash
숫자=5
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
또 다른
echo $number는 10보다 크지 않습니다.
BE
에코 ——–
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
elif [ $number -eq 10 ]; 그 다음에
echo $number는 10과 같습니다.
또 다른
echo $number가 10보다 작습니다.
BE

설명:

이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

if_elif 차이

if_elif 차이

23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

while 루프의 기본 구문은 다음과 같습니다.

동안 [ 조건 ]; 하다
# 실행할 명령
완료

설명:

  1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
  2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
  3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

예: 1부터 5까지의 숫자를 출력하고 싶다면

#!/bin/bash
카운터=1
동안 [ $counter -le 5 ]; 하다
에코 번호: $counter
카운터=$((카운터 + 1))
완료

설명:

  • 카운터 변수는 1로 설정됩니다.
  • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
  • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
  • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
while 루프

while 루프

24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

`find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에
echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE
echo $directory의 빈 파일:
$directory 찾기 -type f -empty

설명:

  1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
  2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
  3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
  4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
  5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
  6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
  7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
  8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
  10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
  11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
  12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
빈 파일 찾기

빈 파일 찾기

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

읽기 명령 구문:

read variable_name>

: 사용자로부터 이름을 입력받아 인쇄하려는 경우.

#!/bin/bash
echo 이름을 입력해주세요:
이름을 읽어보세요
echo 안녕하세요, $name 님!

453

이름 읽어 줘

요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에

echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE

CD $디렉토리 || 1번 출구

*에 있는 파일의 경우; 하다
if [ -f $file ]; 그 다음에
newname=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
BE
완료

설명:

  1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
  3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
  4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
  5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
  6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
  7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
  8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
  10. BE : 두 번째 if 문의 끝을 표시합니다.
  11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
  12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
  13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
  14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
  15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
  16. BE : 내부 if 문의 끝을 표시합니다.
  17. 완료 : 루프의 끝을 표시합니다.

454

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

  1. 산술 확장($((…)))
  2. expr 명령 사용
  3. let 명령 사용

다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

#!/bin/bash
숫자1=10
숫자2=5

#산술 확장 ($((…)))

결과=$((숫자1 + 숫자2))
에코 합계: $result

#expr 명령 사용

합계=$(expr $num1 + $num2)
에코 합계: $sum

#let 명령 사용

합계 = num1 + num2라고 합시다.
에코 합계: $sum

설명:

  1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
  3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
  4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
  5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
  6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
  7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
  8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
  9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
  10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
  11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
산수

산수

28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

#!/bin/bash
호스트=$1″
if [ -z $host ]; 그 다음에
에코 사용량: $0
1번 출구
BE
핑 -c 4 $호스트

만약 [ $? -eq 0]; 그 다음에
echo $host에 연결할 수 있습니다.
또 다른
echo $host에 연결할 수 없습니다.
BE

설명:

  1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
  2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
  3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
  4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

456

메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

#!/bin/bash
# 배열 선언
배열=(3 56 24 89 67)

# 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

최대=${배열[0]}

# 배열을 반복합니다.

${array[@]}의 숫자에 대해; 하다

# 각 요소를 현재 최대값과 비교합니다.

if ((숫자> 최대)); 그 다음에
최대=$num
BE
완료

# 최대값을 인쇄합니다

echo 배열의 최대 요소는 다음과 같습니다. $max

설명:

  1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
  2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
  3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
  4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
  5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
  6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
  7. ` 완료 `: `for` 루프가 닫혀 있습니다.
  8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
461

가장 큰 수

30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

#!/bin/bash

# 배열 선언

배열=(1 65 22 19 94)

# 합계를 저장할 변수를 초기화합니다.

합=0

# 배열을 반복하고 각 요소를 합계에 추가합니다.

${array[@]}의 숫자에 대해; 하다
오전=$((오전 + 오전))
완료

# 합계를 인쇄합니다

echo 배열 요소의 합계는 다음과 같습니다. $sum

설명:

` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

`echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

462

요소의 합

쉘 스크립트에 대해 더 알아보기

결론

우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.




1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에

echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE

CD $디렉토리 || 1번 출구

*에 있는 파일의 경우; 하다
if [ -f $file ]; 그 다음에
newname=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
BE
완료

설명:

  1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. 디렉토리=″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
  3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
  4. 에코 사용량:

    모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

    하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

    쉘 스크립트란 무엇입니까?

    음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

    쉘 스크립트 사용

    다음은 Shell Script의 몇 가지 일반적인 용도입니다.

    • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
    • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
    • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

    Linux의 쉘 스크립트 예

    1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

    그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

    예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

    오두막

    오두막

    이 예에서는 다음과 같습니다.

    • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

    2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

    명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

    • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
    chmod +x myscript.sh>
    • 파일 이름을 사용하여 스크립트를 실행합니다.
    ./myscript.sh>

    여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

    3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

    스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

    vim myscript.sh>

    #!/bin/bash
    # 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
    에코 techcodeview.com

    이름을 새기다

    이름을 새기다

    `chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

    4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

    그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

    434

    에코 명령

    이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

    5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

    할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

    예를 들어:

    #!/bin/bash
    # 변수에 값 할당하기
    이름=자예쉬
    나이=21
    $name $나이에코

    설명:

    • name 변수에는 Jayesh라는 값이 할당됩니다.
    • 연령 변수에는 값 21이 할당됩니다.
    • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

    435

    6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash
    # 사용자에게 이름을 묻습니다.
    에코 이름이 뭐예요?
    이름을 읽어보세요
    # 사용자에게 인사
    echo 안녕하세요, $name 님! 만나서 반가워요.

    설명:

    • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
    • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
    • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
    • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
    • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

    436

    7) 쉘 스크립트에 주석을 어떻게 추가합니까?

    쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

    #!/bin/bash
    # 스크립트의 목적을 설명하는 주석입니다.
    에코 GFG

    8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

    다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

    #!/bin/bash
    파일=example.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    echo 파일이 존재합니다: $file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
    4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
    5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
    7. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 찾기

    파일 찾기

    9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

    작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

    • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
    • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

    #!/bin/bash

    abcd=안녕하세요
    echo '$abcd' # 출력: $abcd
    echo $abcd # 출력: 안녕하세요

    10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

    명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

    예를 들어: `example.sh`에 스크립트 이름이 있는 경우

    #!/bin/bash

    에코 스크립트 이름: $0
    echo 첫 번째 인수: $1
    echo 두 번째 인수: $2

    `.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

    CLI 인수

    CLI 인수

    11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    과일 =(사과 바나나 체리 날짜)
    ${fruits[@]}의 과일에 대해; 하다
    echo 현재 과일: $fruit
    완료

    설명:

    `fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

    • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
    • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
    • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
    • do: 이 키워드는 루프 본문의 시작을 표시합니다.
    • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
    • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
    for 루프

    for 루프

    12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    에코 숫자를 입력하세요(N):
    N을 읽어라
    합=0
    for (( i=1; i<=$N; i++ )); 하다
    합계=$((합계 + i))
    완료
    echo 1부터 $N까지의 정수 합계: $sum

    설명:
    스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

    1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
    2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
    3. 루프 내부에서는 다음과 같은 일이 발생합니다.
      • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
      • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
      • 조건이 true이면 루프 본문이 실행됩니다.
      • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
    4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
    5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
    6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

    439

    13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

    스크립트 이름 `word_count.sh`를 만듭니다.

    #!/bin/bash

    echo 검색할 단어를 입력하세요:
    target_word 읽기
    echo 파일 이름을 입력하세요:
    파일 이름 읽기
    개수=$(grep -o -w $target_word $파일 이름 | wc -l)
    echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

    설명:

    • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
    • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
    • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
    • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
    • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
      • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
      • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
      • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
      • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

    441

    14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

    표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

    • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
    • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

    15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

    쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

    쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

    if [ 조건 ]; 그 다음에
    # 조건이 참일 때 실행할 명령어
    elif [ 또 다른_조건 ]; 그 다음에
    # another_condition이 true인 경우 실행할 명령(선택 사항)
    또 다른
    # 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
    BE

    설명:

    • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
    • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
    • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
    • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
    • fi = 조건 블록의 끝을 표시하는 키워드입니다.

    16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

    에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

    #!/bin/bash
    파일=/home/jayeshkumar/jayesh.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    IFS= 읽기 -r 라인 동안; 하다
    echo 줄 읽기: $line
    # 여기에 처리 로직을 추가하세요
    완료 <$file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
    4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
      • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
      • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
    5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
    6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
    7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
    8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
    10. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 읽기

    파일 읽기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

    17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

    다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

    #!/bin/bash
    # 계승을 계산하는 함수를 정의합니다.
    계산_팩토리얼() {
    숫자=$1
    사실=1
    for ((i=1; i<=num; i++)); 하다
    사실=$((사실 * i))
    완료
    에코 $사실
    }
    # 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
    에코 숫자를 입력하세요:
    input_num 읽기
    # 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
    계승_결과=$(calculate_factorial $input_num)
    # 계승 결과를 표시합니다
    echo $input_num의 계승은 다음과 같습니다: $factorial_result

    설명:

    1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
    2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
    3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
    4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
    5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
    6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
    7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
    8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
    계승

    계승

    18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

    쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

    #!/bin/bash
    정리() {
    에코 스크립트가 중단되었습니다. 정리 수행 중…
    # 여기에 정리 작업을 추가하세요
    1번 출구
    }
    # Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
    트랩 청소 SIGINT
    # 스크립트의 나머지 부분
    에코 실행 중…
    잠 10
    에코가 끝났습니다.

    신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

    설명:

    1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
    2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
    3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
    4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

    446

    19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

    다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

    #!/bin/bash
    input_file=input.txt
    출력_파일=output.txt
    $input_file 정렬 | 유니크> $output_file
    echo 중복된 줄이 성공적으로 제거되었습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
    3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
    4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
    5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
    6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
    중복라인 제거

    중복라인 제거

    여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

    20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

    안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

    #!/bin/bash
    # 임의의 비밀번호를 생성하는 함수
    generate_password() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # 함수를 호출하고 생성된 비밀번호를 저장합니다.
    비밀번호=$(generate_password)
    echo 생성된 비밀번호: $password

    참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
      • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
    3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
    4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

    448

    21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=/경로/to/your/디렉토리
    total_size=$(du -csh $directory | grep total | awk '{print $1}')
    echo $directory에 있는 총 파일 크기: $total_size

    설명:

    1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
    3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
      • -c: 총계를 생성합니다.
      • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
      • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
    4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
    5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
    6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
    7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
    총 파일 크기

    총 파일 크기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

    22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

    특징 `만약` 스테이프먼트 `elif` 문
    목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
    용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
    블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
    실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
    중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

    예를 들어 이해해 보겠습니다.

    #!/bin/bash
    숫자=5
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    또 다른
    echo $number는 10보다 크지 않습니다.
    BE
    에코 ——–
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    elif [ $number -eq 10 ]; 그 다음에
    echo $number는 10과 같습니다.
    또 다른
    echo $number가 10보다 작습니다.
    BE

    설명:

    이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

    if_elif 차이

    if_elif 차이

    23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

    while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

    while 루프의 기본 구문은 다음과 같습니다.

    동안 [ 조건 ]; 하다
    # 실행할 명령
    완료

    설명:

    1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
    2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
    3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

    예: 1부터 5까지의 숫자를 출력하고 싶다면

    #!/bin/bash
    카운터=1
    동안 [ $counter -le 5 ]; 하다
    에코 번호: $counter
    카운터=$((카운터 + 1))
    완료

    설명:

    • 카운터 변수는 1로 설정됩니다.
    • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
    • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
    • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
    while 루프

    while 루프

    24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

    `find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에
    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE
    echo $directory의 빈 파일:
    $directory 찾기 -type f -empty

    설명:

    1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
    2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
    3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
    4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
    5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
    6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
    7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
    8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
    10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
    11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
    12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
    빈 파일 찾기

    빈 파일 찾기

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

    25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

    쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

    읽기 명령 구문:

    read variable_name>

    : 사용자로부터 이름을 입력받아 인쇄하려는 경우.

    #!/bin/bash
    echo 이름을 입력해주세요:
    이름을 읽어보세요
    echo 안녕하세요, $name 님!

    453

    이름 읽어 줘

    요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

    26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에

    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE

    CD $디렉토리 || 1번 출구

    *에 있는 파일의 경우; 하다
    if [ -f $file ]; 그 다음에
    newname=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    BE
    완료

    설명:

    1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
    3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
    4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
    5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
    6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
    7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
    8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
    10. BE : 두 번째 if 문의 끝을 표시합니다.
    11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
    12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
    13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
    14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
    15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
    16. BE : 내부 if 문의 끝을 표시합니다.
    17. 완료 : 루프의 끝을 표시합니다.

    454

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

    27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

    다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

    1. 산술 확장($((…)))
    2. expr 명령 사용
    3. let 명령 사용

    다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

    #!/bin/bash
    숫자1=10
    숫자2=5

    #산술 확장 ($((…)))

    결과=$((숫자1 + 숫자2))
    에코 합계: $result

    #expr 명령 사용

    합계=$(expr $num1 + $num2)
    에코 합계: $sum

    #let 명령 사용

    합계 = num1 + num2라고 합시다.
    에코 합계: $sum

    설명:

    1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
    3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
    4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
    5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
    6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
    7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
    8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
    10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
    11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    산수

    산수

    28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

    다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

    #!/bin/bash
    호스트=$1″
    if [ -z $host ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE
    핑 -c 4 $호스트

    만약 [ $? -eq 0]; 그 다음에
    echo $host에 연결할 수 있습니다.
    또 다른
    echo $host에 연결할 수 없습니다.
    BE

    설명:

    1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
    2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
    3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
    4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

    456

    메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

    29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

    다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

    #!/bin/bash
    # 배열 선언
    배열=(3 56 24 89 67)

    # 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

    최대=${배열[0]}

    # 배열을 반복합니다.

    ${array[@]}의 숫자에 대해; 하다

    # 각 요소를 현재 최대값과 비교합니다.

    if ((숫자> 최대)); 그 다음에
    최대=$num
    BE
    완료

    # 최대값을 인쇄합니다

    echo 배열의 최대 요소는 다음과 같습니다. $max

    설명:

    1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
    2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
    3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
    4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
    5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
    6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
    7. ` 완료 `: `for` 루프가 닫혀 있습니다.
    8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
    461

    가장 큰 수

    30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

    #!/bin/bash

    # 배열 선언

    배열=(1 65 22 19 94)

    # 합계를 저장할 변수를 초기화합니다.

    합=0

    # 배열을 반복하고 각 요소를 합계에 추가합니다.

    ${array[@]}의 숫자에 대해; 하다
    오전=$((오전 + 오전))
    완료

    # 합계를 인쇄합니다

    echo 배열 요소의 합계는 다음과 같습니다. $sum

    설명:

    ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

    ` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

    ` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

    ` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

    ` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

    ` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

    `echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

    462

    요소의 합

    쉘 스크립트에 대해 더 알아보기

    결론

    우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.



    : 디렉토리가 비어 있으면 이 줄은 스크립트 이름(

    모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

    하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

    쉘 스크립트란 무엇입니까?

    음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

    쉘 스크립트 사용

    다음은 Shell Script의 몇 가지 일반적인 용도입니다.

    • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
    • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
    • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

    Linux의 쉘 스크립트 예

    1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

    그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

    예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

    오두막

    오두막

    이 예에서는 다음과 같습니다.

    • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

    2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

    명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

    • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
    chmod +x myscript.sh>
    • 파일 이름을 사용하여 스크립트를 실행합니다.
    ./myscript.sh>

    여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

    3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

    스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

    vim myscript.sh>

    #!/bin/bash
    # 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
    에코 techcodeview.com

    이름을 새기다

    이름을 새기다

    `chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

    4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

    그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

    434

    에코 명령

    이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

    5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

    할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

    예를 들어:

    #!/bin/bash
    # 변수에 값 할당하기
    이름=자예쉬
    나이=21
    $name $나이에코

    설명:

    • name 변수에는 Jayesh라는 값이 할당됩니다.
    • 연령 변수에는 값 21이 할당됩니다.
    • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

    435

    6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash
    # 사용자에게 이름을 묻습니다.
    에코 이름이 뭐예요?
    이름을 읽어보세요
    # 사용자에게 인사
    echo 안녕하세요, $name 님! 만나서 반가워요.

    설명:

    • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
    • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
    • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
    • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
    • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

    436

    7) 쉘 스크립트에 주석을 어떻게 추가합니까?

    쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

    #!/bin/bash
    # 스크립트의 목적을 설명하는 주석입니다.
    에코 GFG

    8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

    다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

    #!/bin/bash
    파일=example.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    echo 파일이 존재합니다: $file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
    4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
    5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
    7. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 찾기

    파일 찾기

    9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

    작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

    • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
    • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

    #!/bin/bash

    abcd=안녕하세요
    echo '$abcd' # 출력: $abcd
    echo $abcd # 출력: 안녕하세요

    10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

    명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

    예를 들어: `example.sh`에 스크립트 이름이 있는 경우

    #!/bin/bash

    에코 스크립트 이름: $0
    echo 첫 번째 인수: $1
    echo 두 번째 인수: $2

    `.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

    CLI 인수

    CLI 인수

    11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    과일 =(사과 바나나 체리 날짜)
    ${fruits[@]}의 과일에 대해; 하다
    echo 현재 과일: $fruit
    완료

    설명:

    `fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

    • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
    • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
    • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
    • do: 이 키워드는 루프 본문의 시작을 표시합니다.
    • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
    • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
    for 루프

    for 루프

    12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

    스크립트 이름 `example.sh`를 만듭니다.

    #!/bin/bash

    에코 숫자를 입력하세요(N):
    N을 읽어라
    합=0
    for (( i=1; i<=$N; i++ )); 하다
    합계=$((합계 + i))
    완료
    echo 1부터 $N까지의 정수 합계: $sum

    설명:
    스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

    1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
    2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
    3. 루프 내부에서는 다음과 같은 일이 발생합니다.
      • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
      • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
      • 조건이 true이면 루프 본문이 실행됩니다.
      • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
    4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
    5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
    6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

    439

    13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

    스크립트 이름 `word_count.sh`를 만듭니다.

    #!/bin/bash

    echo 검색할 단어를 입력하세요:
    target_word 읽기
    echo 파일 이름을 입력하세요:
    파일 이름 읽기
    개수=$(grep -o -w $target_word $파일 이름 | wc -l)
    echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

    설명:

    • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
    • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
    • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
    • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
    • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
      • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
      • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
      • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
      • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

    441

    14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

    표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

    • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
    • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

    15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

    쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

    쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

    if [ 조건 ]; 그 다음에
    # 조건이 참일 때 실행할 명령어
    elif [ 또 다른_조건 ]; 그 다음에
    # another_condition이 true인 경우 실행할 명령(선택 사항)
    또 다른
    # 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
    BE

    설명:

    • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
    • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
    • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
    • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
    • fi = 조건 블록의 끝을 표시하는 키워드입니다.

    16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

    에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

    #!/bin/bash
    파일=/home/jayeshkumar/jayesh.txt
    # 파일이 존재하는지 확인
    if [ -e $file ]; 그 다음에
    IFS= 읽기 -r 라인 동안; 하다
    echo 줄 읽기: $line
    # 여기에 처리 로직을 추가하세요
    완료 <$file
    또 다른
    echo 파일을 찾을 수 없습니다: $file
    BE

    설명:

    1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
    2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
    3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
    4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
      • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
      • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
    5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
    6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
    7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
    8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
    9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
    10. fi: 이 줄은 if 문의 끝을 표시합니다.
    파일 읽기

    파일 읽기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

    17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

    다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

    #!/bin/bash
    # 계승을 계산하는 함수를 정의합니다.
    계산_팩토리얼() {
    숫자=$1
    사실=1
    for ((i=1; i<=num; i++)); 하다
    사실=$((사실 * i))
    완료
    에코 $사실
    }
    # 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
    에코 숫자를 입력하세요:
    input_num 읽기
    # 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
    계승_결과=$(calculate_factorial $input_num)
    # 계승 결과를 표시합니다
    echo $input_num의 계승은 다음과 같습니다: $factorial_result

    설명:

    1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
    2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
    3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
    4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
    5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
    6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
    7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
    8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
    계승

    계승

    18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

    쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

    #!/bin/bash
    정리() {
    에코 스크립트가 중단되었습니다. 정리 수행 중…
    # 여기에 정리 작업을 추가하세요
    1번 출구
    }
    # Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
    트랩 청소 SIGINT
    # 스크립트의 나머지 부분
    에코 실행 중…
    잠 10
    에코가 끝났습니다.

    신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

    설명:

    1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
    2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
    3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
    4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

    446

    19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

    다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

    #!/bin/bash
    input_file=input.txt
    출력_파일=output.txt
    $input_file 정렬 | 유니크> $output_file
    echo 중복된 줄이 성공적으로 제거되었습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
    3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
    4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
    5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
    6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
    중복라인 제거

    중복라인 제거

    여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

    20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

    안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

    #!/bin/bash
    # 임의의 비밀번호를 생성하는 함수
    generate_password() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # 함수를 호출하고 생성된 비밀번호를 저장합니다.
    비밀번호=$(generate_password)
    echo 생성된 비밀번호: $password

    참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

    설명:

    1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
    2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
      • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
    3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
    4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

    448

    21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=/경로/to/your/디렉토리
    total_size=$(du -csh $directory | grep total | awk '{print $1}')
    echo $directory에 있는 총 파일 크기: $total_size

    설명:

    1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
    2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
    3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
      • -c: 총계를 생성합니다.
      • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
      • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
    4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
    5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
    6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
    7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
    총 파일 크기

    총 파일 크기

    여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

    22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

    특징 `만약` 스테이프먼트 `elif` 문
    목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
    용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
    블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
    실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
    중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

    예를 들어 이해해 보겠습니다.

    #!/bin/bash
    숫자=5
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    또 다른
    echo $number는 10보다 크지 않습니다.
    BE
    에코 ——–
    if [ $number -gt 10 ]; 그 다음에
    echo $number가 10보다 큽니다.
    elif [ $number -eq 10 ]; 그 다음에
    echo $number는 10과 같습니다.
    또 다른
    echo $number가 10보다 작습니다.
    BE

    설명:

    이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

    if_elif 차이

    if_elif 차이

    23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

    while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

    while 루프의 기본 구문은 다음과 같습니다.

    동안 [ 조건 ]; 하다
    # 실행할 명령
    완료

    설명:

    1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
    2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
    3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

    예: 1부터 5까지의 숫자를 출력하고 싶다면

    #!/bin/bash
    카운터=1
    동안 [ $counter -le 5 ]; 하다
    에코 번호: $counter
    카운터=$((카운터 + 1))
    완료

    설명:

    • 카운터 변수는 1로 설정됩니다.
    • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
    • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
    • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
    while 루프

    while 루프

    24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

    `find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에
    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE
    echo $directory의 빈 파일:
    $directory 찾기 -type f -empty

    설명:

    1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
    2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
    3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
    4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
    5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
    6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
    7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
    8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
    10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
    11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
    12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
    빈 파일 찾기

    빈 파일 찾기

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

    25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

    쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

    읽기 명령 구문:

    read variable_name>

    : 사용자로부터 이름을 입력받아 인쇄하려는 경우.

    #!/bin/bash
    echo 이름을 입력해주세요:
    이름을 읽어보세요
    echo 안녕하세요, $name 님!

    453

    이름 읽어 줘

    요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

    26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

    다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

    #!/bin/bash
    디렉토리=$1″
    if [ -z $디렉토리 ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE

    만약에 [ ! -d $디렉토리]; 그 다음에

    echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
    1번 출구
    BE

    CD $디렉토리 || 1번 출구

    *에 있는 파일의 경우; 하다
    if [ -f $file ]; 그 다음에
    newname=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    BE
    완료

    설명:

    1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
    3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
    4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
    5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
    6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
    7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
    8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
    9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
    10. BE : 두 번째 if 문의 끝을 표시합니다.
    11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
    12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
    13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
    14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
    15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
    16. BE : 내부 if 문의 끝을 표시합니다.
    17. 완료 : 루프의 끝을 표시합니다.

    454

    메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

    27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

    다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

    1. 산술 확장($((…)))
    2. expr 명령 사용
    3. let 명령 사용

    다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

    #!/bin/bash
    숫자1=10
    숫자2=5

    #산술 확장 ($((…)))

    결과=$((숫자1 + 숫자2))
    에코 합계: $result

    #expr 명령 사용

    합계=$(expr $num1 + $num2)
    에코 합계: $sum

    #let 명령 사용

    합계 = num1 + num2라고 합시다.
    에코 합계: $sum

    설명:

    1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
    2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
    3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
    4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
    5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
    6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
    7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
    8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
    10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
    11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
    산수

    산수

    28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

    다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

    #!/bin/bash
    호스트=$1″
    if [ -z $host ]; 그 다음에
    에코 사용량: $0
    1번 출구
    BE
    핑 -c 4 $호스트

    만약 [ $? -eq 0]; 그 다음에
    echo $host에 연결할 수 있습니다.
    또 다른
    echo $host에 연결할 수 없습니다.
    BE

    설명:

    1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
    2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
    3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
    4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

    456

    메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

    29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

    다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

    #!/bin/bash
    # 배열 선언
    배열=(3 56 24 89 67)

    # 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

    최대=${배열[0]}

    # 배열을 반복합니다.

    ${array[@]}의 숫자에 대해; 하다

    # 각 요소를 현재 최대값과 비교합니다.

    if ((숫자> 최대)); 그 다음에
    최대=$num
    BE
    완료

    # 최대값을 인쇄합니다

    echo 배열의 최대 요소는 다음과 같습니다. $max

    설명:

    1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
    2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
    3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
    4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
    5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
    6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
    7. ` 완료 `: `for` 루프가 닫혀 있습니다.
    8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
    461

    가장 큰 수

    30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

    #!/bin/bash

    # 배열 선언

    배열=(1 65 22 19 94)

    # 합계를 저장할 변수를 초기화합니다.

    합=0

    # 배열을 반복하고 각 요소를 합계에 추가합니다.

    ${array[@]}의 숫자에 대해; 하다
    오전=$((오전 + 오전))
    완료

    # 합계를 인쇄합니다

    echo 배열 요소의 합계는 다음과 같습니다. $sum

    설명:

    ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

    ` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

    ` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

    ` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

    ` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

    ` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

    `echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

    462

    요소의 합

    쉘 스크립트에 대해 더 알아보기

    결론

    우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.



    )과 함께 사용법 메시지를 인쇄합니다.
  5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
  6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
  7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
  8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
  10. BE : 두 번째 if 문의 끝을 표시합니다.
  11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
  12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
  13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
  14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
  15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
  16. BE : 내부 if 문의 끝을 표시합니다.
  17. 완료 : 루프의 끝을 표시합니다.

454

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

  1. 산술 확장($((…)))
  2. expr 명령 사용
  3. let 명령 사용

다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

#!/bin/bash
숫자1=10
숫자2=5

#산술 확장 ($((…)))

결과=$((숫자1 + 숫자2))
에코 합계: $result

#expr 명령 사용

합계=$(expr $num1 + $num2)
에코 합계: $sum

#let 명령 사용

합계 = num1 + num2라고 합시다.
에코 합계: $sum

설명:

  1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
  3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
  4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
  5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
  6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
  7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
  8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
  9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
  10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
  11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
산수

산수

28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

#!/bin/bash
호스트=″
if [ -z $host ]; 그 다음에
에코 사용량:

모든 Linux 배포판에서 셸 스크립트는 프로세스를 자동화하고 사용자 시간을 절약하며 생산성을 높이는 마술 지팡이와 같습니다. 이 스크립팅 튜토리얼에서는 25가지 이상의 샤프 스크립팅 예제를 소개합니다.

하지만 주제로 넘어가기 전에 쉘 스크립팅 예를 들어, 쉘 스크립트와 쉘 스크립팅의 실제 사용 사례를 이해해 봅시다.

쉘 스크립트란 무엇입니까?

음, 껍질은 CLI ( 명령줄 해석기 )는 사용자가 셸 명령을 관리하고 실행할 수 있는 텍스트 창에서 실행됩니다. 반면, Linux 시스템에서 실행될 일련의 명령을 작성하는 과정과 같은 명령이 포함된 파일을 bash 스크립트라고 합니다.

쉘 스크립트 사용

다음은 Shell Script의 몇 가지 일반적인 용도입니다.

  • 작업 자동화 – 정기 백업, 소프트웨어 설치 작업 등 반복적인 작업을 자동화하는 데 사용할 수 있습니다.
  • 커스터마이징 – 쉘 스크립트를 사용하여 명령줄 환경을 설계하고 필요에 따라 작업을 쉽게 수행할 수 있습니다.
  • 파일 관리 - 쉘 스크립트는 파일 이동, 복사, 이름 바꾸기 또는 삭제와 같은 파일 및 디렉토리를 관리하고 조작하는 데에도 사용할 수 있습니다.

Linux의 쉘 스크립트 예

1) 쉘 스크립트 시작 부분의 shebang(#!)은 무엇을 나타냅니까?

그만큼 셔뱅(#!) 스크립트 시작 부분에는 스크립트를 실행하는 데 사용해야 하는 인터프리터를 나타냅니다. 스크립트의 명령을 해석해야 하는 쉘이나 인터프리터를 시스템에 알려줍니다.

예를 들어: 다음과 같은 스크립트가 있다고 가정합니다. myscript.sh Bash 쉘에 작성되었습니다:

오두막

오두막

이 예에서는 다음과 같습니다.

  • 스크립트 시작 부분의 #!/bin/bash는 스크립트가 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  • echo 명령은 터미널에 메시지를 인쇄하는 데 사용됩니다.

2) 명령줄에서 쉘 스크립트를 어떻게 실행합니까?

명령줄에서 쉘 스크립트를 실행하려면 다음 단계를 따라야 합니다.

  • 다음을 사용하여 스크립트 파일에 실행 권한이 있는지 확인하세요. chmod 명령 :
chmod +x myscript.sh>
  • 파일 이름을 사용하여 스크립트를 실행합니다.
./myscript.sh>

여기에서 교체해야합니다 myscripttipt.sh 당신의 스크립트 이름으로.

3) techcodeview.com를 터미널에 인쇄하는 쉘 스크립트를 작성합니다.

스크립트 이름 `myscript.sh`를 생성합니다(우리는 ` 왜냐하면 ` 편집기, 아무 편집기나 선택할 수 있습니다)

vim myscript.sh>

#!/bin/bash
# 이 스크립트는 techcodeview.com를 터미널에 인쇄합니다.
에코 techcodeview.com

이름을 새기다

이름을 새기다

`chmod +x`를 사용하여 스크립트를 실행 가능하게 만든 다음 `./myscipt.sh`로 실행하여 원하는 출력 techcodeview.com를 얻습니다.

4) 쉘 스크립팅에서 echo 명령의 목적을 설명하십시오.

그만큼 에코 명령 터미널에 텍스트나 변수를 표시하는 데 사용됩니다. 일반적으로 메시지 인쇄, 변수 값 및 프로그램 출력 생성에 사용됩니다.

434

에코 명령

이 예에서는 쉘 스크립트 내에서도 동일하게 작동하므로 터미널에서 `echo`를 직접 실행했습니다.

5) 쉘 스크립트에서 변수에 값을 어떻게 할당할 수 있나요?

할당 연산자 =를 사용하여 변수에 값이 할당됩니다.

예를 들어:

#!/bin/bash
# 변수에 값 할당하기
이름=자예쉬
나이=21
$name $나이에코

설명:

  • name 변수에는 Jayesh라는 값이 할당됩니다.
  • 연령 변수에는 값 21이 할당됩니다.
  • echo는 인쇄에 사용되며 `$name` `$age`는 변수에 저장된 값을 호출하는 데 사용됩니다.

435

6) 사용자의 이름을 입력으로 받아 인사하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash
# 사용자에게 이름을 묻습니다.
에코 이름이 뭐예요?
이름을 읽어보세요
# 사용자에게 인사
echo 안녕하세요, $name 님! 만나서 반가워요.

설명:

  • #!/bin/bash: 이것은 shebang 라인입니다. Bash 인터프리터를 사용하여 스크립트를 실행하도록 시스템에 지시합니다.
  • # 사용자에게 이름을 물어보세요: 댓글입니다. 이는 향후 코드에 대한 컨텍스트를 제공합니다. 해석기는 주석을 무시합니다.
  • echo 이름이 무엇입니까?: echo 명령은 터미널에 큰따옴표로 묶인 텍스트를 표시하는 데 사용됩니다.
  • 읽기 이름: 읽기 명령은 사용자가 텍스트를 입력하기를 기다리고 이를 변수 이름에 저장합니다.
  • echo 안녕하세요, $name 님! 만나서 반가워요.: 이 줄은 echo 명령을 사용하여 사용자 입력에서 수집된 name 변수의 값을 포함하는 인사말 메시지를 인쇄합니다.

436

7) 쉘 스크립트에 주석을 어떻게 추가합니까?

쉘 스크립팅의 주석 코드에 대한 설명이나 컨텍스트를 제공하는 데 사용됩니다. 통역사는 이를 무시하며 스크립트를 읽는 사람에게만 의미가 있습니다. # 기호를 사용하여 설명을 추가할 수 있습니다.

#!/bin/bash
# 스크립트의 목적을 설명하는 주석입니다.
에코 GFG

8) 현재 디렉토리에 파일이 존재하는지 확인하는 쉘 스크립트를 작성하십시오.

다음은 현재 디렉터리에 example.txt라는 파일이 있는지 확인하는 스크립트입니다.

#!/bin/bash
파일=example.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
echo 파일이 존재합니다: $file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=example.txt: 이 줄은 변수 file을 정의하고 여기에 example.txt 값을 할당합니다. 이를 확인하려는 파일 이름으로 바꿀 수 있습니다.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. 조건 [ -e $file ]은 file 변수의 값으로 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인하는 데 사용됩니다.
  4. echo 파일 존재: $file: 조건이 true(즉, 파일이 존재함)인 경우, 이 줄은 파일 이름과 함께 파일이 존재함을 나타내는 메시지를 인쇄합니다.
  5. else: 조건이 false인 경우(즉, 파일이 존재하지 않는 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  6. echo 파일을 찾을 수 없음: $file: 이 줄은 파일 이름과 함께 지정된 파일을 찾을 수 없음을 나타내는 오류 메시지를 인쇄합니다.
  7. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 찾기

파일 찾기

9) 쉘 스크립팅에서 작은따옴표(')와 큰따옴표()의 차이점은 무엇입니까?

작은따옴표(')와 큰따옴표()는 쉘 스크립팅에서 문자열을 묶는 데 사용되지만 동작이 다릅니다.

  • 작은따옴표: 작은따옴표 사이의 모든 내용은 리터럴 문자열로 처리됩니다. 변수 이름과 대부분의 특수 문자는 확장되지 않습니다.
  • 큰따옴표: 큰따옴표 안의 변수 및 특정 특수 문자가 확장됩니다. 내용에는 변수 대체 및 명령 대체가 적용됩니다.

#!/bin/bash

abcd=안녕하세요
echo '$abcd' # 출력: $abcd
echo $abcd # 출력: 안녕하세요

10) 쉘 스크립트에서 명령줄 인수를 어떻게 사용할 수 있습니까?

명령줄 인수 스크립트가 실행될 때 스크립트에 제공되는 값입니다. $1, $2 등과 같은 특수 변수를 사용하여 스크립트 내에서 액세스할 수 있습니다. 여기서 $1은 첫 번째 인수를 나타내고 $2는 두 번째 인수를 나타냅니다.

예를 들어: `example.sh`에 스크립트 이름이 있는 경우

#!/bin/bash

에코 스크립트 이름: $0
echo 첫 번째 인수: $1
echo 두 번째 인수: $2

`.example.sh hello_1 hello_2`로 스크립트를 실행하면 다음과 같이 출력됩니다.

CLI 인수

CLI 인수

11) 값 목록을 반복하기 위해 for 루프를 어떻게 사용합니까?

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

과일 =(사과 바나나 체리 날짜)
${fruits[@]}의 과일에 대해; 하다
echo 현재 과일: $fruit
완료

설명:

`fruits=` 라인은 사과, 바나나, 체리, 날짜의 네 가지 요소가 있는 과일이라는 배열을 만듭니다.

  • ${fruits[@]}의 과일에 대해; do: 이 줄은 for 루프를 시작합니다. 각 부분의 의미는 다음과 같습니다.
  • for Fruit: 과일이라는 루프 변수를 선언합니다. 루프가 반복될 때마다 과일은 과일 배열의 현재 요소 값을 보유합니다.
  • ${fruits[@]}: 이는 과일 배열의 모든 요소를 ​​가져오는 배열 확장입니다. ${...} 구문을 사용하면 각 요소가 별도의 항목으로 처리됩니다.
  • do: 이 키워드는 루프 본문의 시작을 표시합니다.
  • echo 현재 과일: $fruit: 루프 내에서 이 줄은 echo 명령을 사용하여 루프 변수 과일의 현재 값을 표시합니다. 이는 배열의 각 과일에 대해 Current Fruit: apple과 같은 메시지를 인쇄합니다.
  • done: 이 키워드는 루프 본문의 끝을 표시합니다. 루프가 완료되었음을 스크립트에 알려줍니다.
for 루프

for 루프

12) 루프를 사용하여 1부터 N까지 정수의 합을 계산하는 쉘 스크립트를 작성하십시오.

스크립트 이름 `example.sh`를 만듭니다.

#!/bin/bash

에코 숫자를 입력하세요(N):
N을 읽어라
합=0
for (( i=1; i<=$N; i++ )); 하다
합계=$((합계 + i))
완료
echo 1부터 $N까지의 정수 합계: $sum

설명:
스크립트는 읽기를 사용하여 숫자(N)를 입력하라는 요청으로 시작됩니다. 이 숫자는 루프 실행 횟수를 결정합니다.

  1. 변수 sum은 0으로 초기화됩니다. 이 변수는 정수의 합계를 추적합니다.
  2. for 루프는 for (( i=1; i<=$N; i++ ))로 시작합니다. 이 루프 구조는 일련의 작업을 특정 횟수(이 경우 1부터 N 값까지)로 반복하는 데 사용됩니다.
  3. 루프 내부에서는 다음과 같은 일이 발생합니다.
    • i=1은 각 반복이 시작될 때 루프 변수 i를 1로 설정합니다.
    • 루프 조건 i<=$N은 i가 여전히 주어진 숫자 N보다 작거나 같은지 확인합니다.
    • 조건이 true이면 루프 본문이 실행됩니다.
    • sum=$((sum + i)) 는 현재 i 값을 추가하여 sum의 새 값을 계산합니다. 이는 1부터 현재 i 값까지의 정수를 더합니다.
  4. 각 반복 후에 i++는 i 값을 1씩 증가시킵니다.
  5. 루프는 i<=$N 조건이 false가 될 때까지(i가 N보다 커질 때) 계속 실행됩니다.
  6. 루프가 완료되면 스크립트는 1부터 입력된 숫자 N까지의 정수 합계를 표시합니다.

439

13) 파일에서 특정 단어를 검색하고 해당 단어의 발생 횟수를 계산하는 스크립트를 만듭니다.

스크립트 이름 `word_count.sh`를 만듭니다.

#!/bin/bash

echo 검색할 단어를 입력하세요:
target_word 읽기
echo 파일 이름을 입력하세요:
파일 이름 읽기
개수=$(grep -o -w $target_word $파일 이름 | wc -l)
echo '$target_word'라는 단어가 '$filename'에 $count번 나타납니다.

설명:

  • echo 검색할 단어를 입력하세요.: 이 줄은 사용자에게 파일에서 검색할 단어를 입력하라는 메시지를 표시합니다.
  • read target_word: 이 줄은 사용자가 제공한 입력을 읽고 이를 target_word라는 변수에 저장합니다.
  • echo 파일 이름을 입력하세요:: 이 줄은 사용자에게 검색할 파일 이름을 입력하라는 메시지를 표시합니다.
  • read filename: 이 줄은 사용자가 제공한 입력을 읽고 이를 filename이라는 변수에 저장합니다.
  • count=$(grep -o -w $target_word $filename | wc -l): 이 줄은 스크립트의 주요 작업을 수행합니다. 더 자세히 분석해 보겠습니다.
    • grep -o -w $target_word $filename: 명령의 이 부분은 지정된 파일 이름에서 target_word의 발생을 검색합니다. -o 및 -w 옵션을 사용하면 전체 단어 일치만 계산됩니다.
    • |: 이전 명령의 출력을 가져와서 다음 명령의 입력으로 보내는 파이프입니다.
    • wc -l: 명령의 이 부분은 wc 명령을 사용하여 입력의 행 수를 계산합니다. -l 옵션은 구체적으로 행 수를 계산합니다.
    • 전체 명령은 파일에서 target_word의 발생 횟수를 계산하고 해당 횟수를 변수 count에 할당합니다.

441

14) 표준 출력(stdout)과 표준 오류(stderr)의 차이점을 설명하십시오.

표준 출력(stdout)과 표준 오류(stderr)의 주요 차이점은 다음과 같습니다.

  • 표준 출력(stdout): 이는 명령의 일반 출력이 진행되는 기본 출력 스트림입니다. 기본적으로 터미널에 표시됩니다.>를 사용하여 파일로 리디렉션할 수 있습니다.
  • 표준 오류(stderr): 이는 오류 메시지 및 경고의 출력 스트림입니다. 기본적으로 터미널에도 표시됩니다. 2>를 사용하여 파일로 리디렉션할 수 있습니다.

15) 쉘 스크립팅에서 조건문의 개념을 설명하십시오.

쉘 스크립팅의 조건문 특정 조건에 따라 스크립트 흐름을 결정하고 제어할 수 있습니다. 이를 통해 스크립트는 특정 조건이 참인지 거짓인지에 따라 다양한 명령 세트를 실행할 수 있습니다. 쉘 스크립팅의 기본 조건문은 if 문, elif 문(선택 사항) 및 else 문(선택 사항)입니다.

쉘 스크립팅의 조건문의 기본 구조는 다음과 같습니다.

if [ 조건 ]; 그 다음에
# 조건이 참일 때 실행할 명령어
elif [ 또 다른_조건 ]; 그 다음에
# another_condition이 true인 경우 실행할 명령(선택 사항)
또 다른
# 조건 중 어느 것도 참이 아닐 때 실행할 명령(선택 사항)
BE

설명:

  • [ 조건 ] = 조건을 평가하고 true(0) 또는 false(0이 아닌) 종료 상태를 반환하는 명령입니다.
  • then = 조건이 true로 평가되면 뒤에 오는 명령이 실행됨을 나타내는 키워드입니다.
  • elif = (else if의 줄임말) 확인할 추가 조건을 지정할 수 있는 섹션입니다.
  • else = 조건 중 어느 것도 true가 아닐 경우 실행될 명령이 포함된 섹션입니다.
  • fi = 조건 블록의 끝을 표시하는 키워드입니다.

16) 쉘 스크립트 내에서 파일의 행을 어떻게 읽습니까?

에게 라인 읽기 쉘 스크립트 내의 파일에서 다양한 방법을 사용할 수 있지만 일반적인 접근 방식 중 하나는 읽기 명령과 함께 while 루프를 사용하는 것입니다. 방법은 다음과 같습니다.

#!/bin/bash
파일=/home/jayeshkumar/jayesh.txt
# 파일이 존재하는지 확인
if [ -e $file ]; 그 다음에
IFS= 읽기 -r 라인 동안; 하다
echo 줄 읽기: $line
# 여기에 처리 로직을 추가하세요
완료 <$file
또 다른
echo 파일을 찾을 수 없습니다: $file
BE

설명:

  1. #!/bin/bash: 스크립트 실행에 사용할 인터프리터(/bin/bash)를 지정하는 shebang 라인입니다.
  2. file=/home/jayeshkumar/jayesh.txt: 이 줄은 변수 파일을 정의하고 /home/jayeshkumar 디렉터리에 있는 jayesh.txt 파일에 전체 경로를 할당합니다. 읽으려는 파일의 실제 경로와 일치하도록 이 경로를 변경하십시오.
  3. if [ -e $file ]; then: 이 줄은 if 문을 시작합니다. $file 변수에 지정된 파일이 존재하는지 확인합니다. -e 플래그는 파일 존재 여부를 확인합니다.
  4. IFS= 읽기 -r 라인 동안; do: 이 줄은 파일에서 줄을 읽는 while 루프를 시작합니다.
    • IFS=: IFS(내부 필드 구분 기호)는 앞뒤 공백을 유지하기 위해 빈 값으로 설정됩니다.
    • read -r line: 파일에서 현재 행을 읽어 변수 line에 저장합니다.
  5. echo Line read: $line: 이 줄은 파일에서 읽은 줄의 내용을 인쇄합니다. $line 변수에는 현재 줄의 내용이 포함됩니다.
  6. # 여기에 처리 논리 추가: 각 줄을 처리하기 위해 고유한 논리를 추가할 수 있는 자리 표시자 주석입니다. 예를 들어, 내용을 기반으로 행을 분석하거나, 정보를 추출하거나, 특정 작업을 수행할 수 있습니다.
  7. done <$file: 이는 while 루프의 끝을 표시합니다. < $file은 루프에서 읽을 파일 내용을 리디렉션합니다.
  8. else: 파일이 존재하지 않는 경우(if 문의 조건이 false인 경우) 스크립트는 else 분기 아래의 코드를 실행합니다.
  9. echo 파일을 찾을 수 없음: $file: 이 줄은 지정된 파일을 찾을 수 없다는 오류 메시지를 인쇄합니다.
  10. fi: 이 줄은 if 문의 끝을 표시합니다.
파일 읽기

파일 읽기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리의 경로를 가져오는 명령입니다.

17) 주어진 숫자의 계승을 계산하는 함수를 쉘 스크립트에 작성하십시오.

다음은 스크립트입니다.계승을 계산하다주어진 숫자의.

#!/bin/bash
# 계승을 계산하는 함수를 정의합니다.
계산_팩토리얼() {
숫자=$1
사실=1
for ((i=1; i<=num; i++)); 하다
사실=$((사실 * i))
완료
에코 $사실
}
# 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
에코 숫자를 입력하세요:
input_num 읽기
# 입력 숫자로 계산_팩토리얼 함수를 호출합니다.
계승_결과=$(calculate_factorial $input_num)
# 계승 결과를 표시합니다
echo $input_num의 계승은 다음과 같습니다: $factorial_result

설명:

  1. 스크립트는 인터프리터를 지정하기 위해 shebang 줄 #!/bin/bash로 시작합니다.
  2. 계산_팩토리얼()은 함수로 정의됩니다. 계승값을 계산해야 하는 숫자인 num이라는 하나의 인수를 사용합니다.
  3. 함수 내에서 사실은 1로 초기화됩니다. 이 변수는 계승 결과를 저장합니다.
  4. for 루프는 1부터 지정된 숫자(num)까지 반복됩니다. 각 반복에서 팩트의 현재 값에 루프 인덱스 i를 곱합니다.
  5. 루프가 완료되면 사실 변수에 계산된 계승이 포함됩니다.
  6. 스크립트는 사용자에게 읽기를 사용하여 숫자를 입력하라는 메시지를 표시합니다.
  7. 사용자가 제공한 숫자로 계산_팩토리얼 함수가 호출되고 결과는 팩토리얼_결과 변수에 저장됩니다.
  8. 마지막으로 스크립트는 계산된 계승 결과를 표시합니다.
계승

계승

18) 쉘 스크립트에서 Ctrl+C와 같은 신호를 어떻게 처리합니까?

쉘 스크립트에서는 트랩 명령을 사용하여 Ctrl+C(SIGINT라고도 함)와 같은 신호를 처리할 수 있습니다. Ctrl+C는 사용자가 실행 중인 스크립트나 프로그램을 중단하기 위해 SIGINT 신호를 생성합니다. Trap 명령을 사용하면 특정 신호가 수신될 때 수행할 작업을 지정할 수 있습니다. 쉘 스크립트에서 Ctrl+C와 같은 신호를 처리하는 방법은 다음과 같습니다.

#!/bin/bash
정리() {
에코 스크립트가 중단되었습니다. 정리 수행 중…
# 여기에 정리 작업을 추가하세요
1번 출구
}
# Ctrl+C(SIGINT)를 수신할 때 정리 기능을 호출하도록 트랩을 설정합니다.
트랩 청소 SIGINT
# 스크립트의 나머지 부분
에코 실행 중…
잠 10
에코가 끝났습니다.

신호 처리는 스크립트를 강력하게 만들고 예상치 못한 중단을 우아하게 처리하는 데 중요합니다. 파일 닫기, 프로세스 중지, 스크립트 종료 전 정보 로깅 등 특정 요구 사항에 맞게 정리 기능을 사용자 정의할 수 있습니다.

설명:

  1. #!/bin/bash: 이 shebang 줄은 스크립트 실행에 사용할 인터프리터를 지정합니다.
  2. cleanup() { … }: 이는 cleanup이라는 함수를 정의합니다. 이 함수 안에는 파일 닫기, 리소스 해제, 기타 정리 작업 수행 등 스크립트가 중단될 때 수행해야 하는 모든 작업을 포함할 수 있습니다.
  3. 트랩 정리 SIGINT: 트랩 명령은 신호 처리기를 설정하는 데 사용됩니다. 이 경우 SIGINT 신호(Ctrl+C)를 수신하면 정리 기능을 실행하도록 지정합니다.
  4. echo Running…, sleep 10, echo Finished.: 이는 스크립트 실행을 시뮬레이션하기 위한 샘플 명령일 뿐입니다.

446

19) 텍스트 파일에서 중복된 줄을 확인하고 제거하는 스크립트를 만듭니다.

다음은 텍스트 파일에서 중복된 줄을 제거하는 Linux 스크립트입니다.

#!/bin/bash
input_file=input.txt
출력_파일=output.txt
$input_file 정렬 | 유니크> $output_file
echo 중복된 줄이 성공적으로 제거되었습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 스크립트를 해석해야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. input_file 변수는 중복 행을 포함하는 입력 파일의 이름으로 설정됩니다(실제 입력 파일 이름으로 변경).
  3. output_file 변수는 중복 항목이 제거될 출력 파일의 이름으로 설정됩니다(원하는 출력 파일 이름으로 변경).
  4. 스크립트는 sort 명령을 사용하여 입력 파일의 행을 정렬합니다. 선을 정렬하면 중복된 선이 함께 그룹화됩니다.
  5. 그런 다음 정렬된 줄은 연속된 중복 줄을 제거하는 uniq 명령을 통해 전달됩니다. 이 프로세스의 출력은 출력 파일로 리디렉션됩니다.
  6. 중복 항목이 제거된 후 스크립트는 성공 메시지를 인쇄합니다.
중복라인 제거

중복라인 제거

여기서는 `를 사용합니다. 고양이 ` 텍스트 파일 내부의 텍스트를 표시합니다.

20) 안전한 무작위 비밀번호를 생성하는 스크립트를 작성하세요.

안전한 임의 비밀번호를 생성하는 스크립트는 다음과 같습니다.

#!/bin/bash
# 임의의 비밀번호를 생성하는 함수
generate_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# 함수를 호출하고 생성된 비밀번호를 저장합니다.
비밀번호=$(generate_password)
echo 생성된 비밀번호: $password

참고: 사용자는 숫자 '12'를 대체하여 비밀번호 길이를 변경할 수 있습니다.

설명:

  1. 스크립트는 Bash 셸을 사용하여 해석되어야 함을 나타내는 shebang(#!/bin/bash)으로 시작됩니다.
  2. generate_password 함수는 임의의 비밀번호를 생성하도록 정의됩니다. 작동 방식은 다음과 같습니다.
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12는 필터링된 임의의 데이터를 각각 너비가 12자인 줄로 나눕니다.
    • head -n 1은 첫 번째 줄을 선택하여 길이가 12인 임의의 문자 시퀀스를 효과적으로 제공합니다.
  3. 비밀번호 변수에는 generate_password 함수 호출 결과가 할당됩니다.
  4. 마지막으로 생성된 비밀번호는 echo를 사용하여 표시됩니다.

448

21) 디렉토리에 있는 모든 파일의 총 크기를 계산하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리에 있는 모든 파일의 전체 크기를 계산하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=/경로/to/your/디렉토리
total_size=$(du -csh $directory | grep total | awk '{print $1}')
echo $directory에 있는 총 파일 크기: $total_size

설명:

  1. 스크립트는 #!/bin/bash shebang으로 시작하여 Bash 셸을 사용하여 해석되어야 함을 나타냅니다.
  2. 디렉토리 변수는 총 파일 크기를 계산하려는 디렉토리의 경로로 설정됩니다. /path/to/your/directory를 실제 경로로 바꾸십시오.
  3. du 명령은 파일 공간 사용량을 추정하는 데 사용됩니다. 사용되는 옵션은 다음과 같습니다.
    • -c: 총계를 생성합니다.
    • -s: 지정된 디렉터리의 전체 크기만 표시합니다.
    • -h: 사람이 읽을 수 있는 형식(예: KB, MB, GB)으로 크기를 인쇄합니다.
  4. du의 출력은 grep total으로 파이프되어 전체 크기가 포함된 행을 필터링합니다.
  5. awk '{print $1}'은 행에서 첫 번째 필드(전체 크기)를 추출하는 데 사용됩니다.
  6. 계산된 전체 크기는 total_size 변수에 저장됩니다.
  7. 마지막으로 스크립트는 echo를 사용하여 전체 크기를 표시합니다.
총 파일 크기

총 파일 크기

여기서는 `를 사용했습니다. 비밀번호 ` 현재 디렉터리 경로를 확인하는 명령입니다.

22) 쉘 스크립팅에서 if문과 elif문의 차이점을 설명하세요.

특징 `만약` 스테이프먼트 `elif` 문
목적 쉘 스크립트에서 if문과 elif문의 차이점을 설명하세요. 초기 if 조건이 false인지 확인할 수 있는 대체 조건을 제공합니다.
용법 초기 조건에 사용됩니다. 추가 조건을 확인하기 위해 초기 if 조건 뒤에 사용됩니다.
블록 수 if 블록은 하나만 가질 수 있습니다. 여러 elif 블록을 가질 수 있지만 else 블록은 하나만 가질 수 있습니다(선택 사항).
실행 조건이 true인 경우 if 문과 관련된 코드 블록을 실행합니다. 조건이 거짓이면 else 블록(있는 경우)이 실행됩니다(선택 사항). 각 elif 조건을 순서대로 확인합니다. 하나의 elif 조건이 true이면 해당 코드 블록이 실행되고 스크립트는 전체 조건 블록을 종료합니다. elif 조건 중 어느 것도 true가 아닌 경우 else 블록(있는 경우)이 실행됩니다.
중첩된 구조 다른 if, elif 또는 else 블록 내에 중첩될 수 있습니다. 다른 elif 블록 내에 중첩될 수 없지만 if 또는 else 블록 내에서는 사용할 수 있습니다.

예를 들어 이해해 보겠습니다.

#!/bin/bash
숫자=5
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
또 다른
echo $number는 10보다 크지 않습니다.
BE
에코 ——–
if [ $number -gt 10 ]; 그 다음에
echo $number가 10보다 큽니다.
elif [ $number -eq 10 ]; 그 다음에
echo $number는 10과 같습니다.
또 다른
echo $number가 10보다 작습니다.
BE

설명:

이 예에서 첫 번째 if 블록은 숫자가 10보다 큰지 확인합니다. 그렇지 않으면 숫자가 10보다 크지 않다는 메시지를 인쇄합니다. elif 문이 있는 두 번째 블록은 여러 조건 중 하나가 true일 때까지 여러 조건을 순차적으로 확인합니다. 이 경우 number 값이 5이므로 출력은 다음과 같습니다.

if_elif 차이

if_elif 차이

23) 명령을 반복적으로 실행하기 위해 while 루프를 어떻게 사용합니까?

while 루프는 쉘 스크립팅에서 지정된 조건이 true인 동안 일련의 명령을 반복적으로 실행하는 데 사용됩니다. 루프는 조건이 false가 될 때까지 명령을 계속 실행합니다.

while 루프의 기본 구문은 다음과 같습니다.

동안 [ 조건 ]; 하다
# 실행할 명령
완료

설명:

  1. 'while' 루프는 키워드 'while'으로 시작하고 그 뒤에 대괄호 '[ ]'로 묶인 조건이 옵니다.
  2. 실행할 명령이 포함된 루프 본문은 'do' 및 'done' 키워드로 묶입니다.
  3. 루프는 먼저 조건을 확인합니다. 조건이 true이면 루프 본문 내의 명령이 실행됩니다. 루프 본문이 실행된 후 조건을 다시 확인하고 조건이 false가 될 때까지 프로세스가 반복됩니다.

예: 1부터 5까지의 숫자를 출력하고 싶다면

#!/bin/bash
카운터=1
동안 [ $counter -le 5 ]; 하다
에코 번호: $counter
카운터=$((카운터 + 1))
완료

설명:

  • 카운터 변수는 1로 설정됩니다.
  • while 루프는 counter 값이 5보다 작거나 같은지 확인합니다. 이 조건이 true인 한 루프는 계속 실행됩니다.
  • 루프 내에서 counter의 현재 값은 echo를 사용하여 인쇄됩니다.
  • 카운터는 $((counter + 1)) 표현식을 사용하여 1씩 증가합니다.
while 루프

while 루프

24) 디렉토리의 모든 빈 파일을 찾아 나열하는 쉘 스크립트를 작성하십시오.

`find` 및 `stat` 명령을 사용하여 디렉터리에서 모든 빈 파일을 찾고 나열하는 데 사용할 수 있는 셸 스크립트:

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에
echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE
echo $directory의 빈 파일:
$directory 찾기 -type f -empty

설명:

  1. ` #!/bin/bash `: 이를 shebang이라고 하며 운영 체제에 Bash 쉘을 사용하여 스크립트를 해석하고 실행하도록 지시합니다.
  2. ` 디렉토리=$1″ `: 이 줄은 첫 번째 명령줄 인수($1로 표시)를 변수 `에 할당합니다. 예배 규칙서 `.
  3. ` if [ -z $디렉토리 ]; 그 다음에 `: 이 줄은 ` 예배 규칙서 ` 변수가 비어 있습니다(-z는 빈 문자열을 테스트합니다).
  4. ` 에코 사용량: $0 `: 디렉토리가 비어 있으면 이 줄은 사용법 메시지를 인쇄합니다. 여기서 ` $0 `는 스크립트 이름을 나타냅니다.
  5. ` 1번 출구 `: 이 줄은 ` 종료 코드로 스크립트를 종료합니다. 1 `, 오류를 나타냅니다.
  6. ` BE `: 이 줄은 `의 끝을 표시합니다. 만약에 `` 성명.
  7. ` 만약에 [ ! -d $디렉토리]; 그 다음에 `: 제공된 디렉토리가 존재하는지 확인하기 위해 또 다른 if 문을 시작합니다(` -디 ` 디렉토리를 테스트합니다).
  8. ` echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. `: 제공된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. ` 1번 출구 `: ` 종료 코드로 스크립트를 종료합니다. 1 `.
  10. ` BE `: 두 번째 `의 끝을 표시합니다. 만약` 성명.
  11. ` echo $directory의 빈 파일: `: 지금까지 모든 것이 유효했다면 이 줄은 스크립트가 지정된 디렉터리에 빈 파일을 나열한다는 것을 나타내는 메시지를 인쇄합니다.
  12. ` $directory 찾기 -type f -empty `: 이 줄은 ` 찾다 ` 빈 파일을 검색하는 명령(` -비어 있는 `) 일반 파일 유형(` -f형 `) 지정된 디렉토리에 있습니다. 그런 다음 이러한 빈 파일을 나열합니다.
빈 파일 찾기

빈 파일 찾기

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/의 경로를 사용했습니다.

25) 쉘 스크립팅에서 읽기 명령의 목적은 무엇입니까?

쉘 스크립팅의 read 명령을 사용하면 스크립트에서 정보를 요청할 수 있습니다. 마치 컴퓨터가 당신에게 질문을 하고 대답을 기다리는 것과 같습니다. 이는 무언가를 입력해야 하는 스크립트나 스크립트가 파일의 정보로 작업해야 하는 경우에 유용합니다. 읽기 명령은 스크립트를 중지하고 사용자가 입력하는 내용을 기다린 다음 해당 정보를 사용하여 스크립트에서 더 많은 작업을 수행할 수 있도록 도와줍니다.

읽기 명령 구문:

read variable_name>

: 사용자로부터 이름을 입력받아 인쇄하려는 경우.

#!/bin/bash
echo 이름을 입력해주세요:
이름을 읽어보세요
echo 안녕하세요, $name 님!

453

이름 읽어 줘

요약하면, 읽기 명령은 쉘 스크립트 내의 파일에서 사용자 입력이나 데이터를 캡처하는 데 사용되어 스크립트를 보다 대화형이고 다양하게 만듭니다.

26) 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트를 작성하십시오.

다음은 디렉토리의 모든 파일 이름을 소문자로 변환하는 쉘 스크립트입니다.

#!/bin/bash
디렉토리=$1″
if [ -z $디렉토리 ]; 그 다음에
에코 사용량: $0
1번 출구
BE

만약에 [ ! -d $디렉토리]; 그 다음에

echo 오류: '$directory'는 유효한 디렉터리가 아닙니다.
1번 출구
BE

CD $디렉토리 || 1번 출구

*에 있는 파일의 경우; 하다
if [ -f $file ]; 그 다음에
newname=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
BE
완료

설명:

  1. #!/bin/bash : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. 디렉토리=$1″ : 이 줄은 첫 번째 명령줄 인수를 변수 디렉터리에 할당합니다.
  3. if [ -z $디렉토리 ]; 그 다음에 : 이 줄은 디렉터리 변수가 비어 있는지 확인합니다(스크립트를 실행할 때 인수가 제공되지 않음).
  4. 에코 사용량: $0 : 디렉토리가 비어 있으면 이 줄은 스크립트 이름($0)과 함께 사용법 메시지를 인쇄합니다.
  5. 1번 출구 : 이 줄은 오류가 발생했음을 나타내는 종료 코드 1로 스크립트를 종료합니다.
  6. 에프 i: 첫 번째 if 문의 끝을 표시합니다.
  7. 만약에 [ ! -d $디렉토리]; 그 다음에 : 이 줄은 지정된 디렉터리가 존재하지 않는지 확인합니다(-d는 디렉터리를 테스트합니다).
  8. echo 오류: '$directory'는 유효한 디렉터리가 아닙니다. : 지정된 디렉터리가 존재하지 않으면 이 줄은 오류 메시지를 인쇄합니다.
  9. 1번 출구 : 종료 코드 1로 스크립트를 종료합니다.
  10. BE : 두 번째 if 문의 끝을 표시합니다.
  11. CD $디렉토리 || 1번 출구 : 현재 작업 디렉터리를 지정된 디렉터리로 변경합니다. 디렉터리 변경이 실패하면(예: 존재하지 않는 디렉터리) 스크립트가 오류 코드와 함께 종료됩니다.
  12. *에 있는 파일의 경우; 하다: *에 있는 파일의 경우; 하다: 현재 디렉터리의 모든 항목을 반복하는 루프를 시작합니다(*는 모든 파일 이름과 일치).
  13. if [ -f $file ]; 그 다음에 : 현재 루프 반복 항목이 일반 파일인지 확인합니다(-f는 일반 파일을 테스트합니다).
  14. newname=$(echo $file | tr 'A-Z' 'a-z') : tr 명령어를 사용하여 현재 파일명($file)을 소문자로 변환하고 그 결과를 newname 변수에 저장합니다.
  15. [ $file != $newname ] && mv $file $newname : 원래 파일 이름을 새 소문자 파일 이름과 비교합니다. 서로 다른 경우 mv 명령을 사용하여 파일 이름을 바꿉니다.
  16. BE : 내부 if 문의 끝을 표시합니다.
  17. 완료 : 루프의 끝을 표시합니다.

454

메모 : 스크립트를 실행할 때 디렉터리를 인수로 제공해야 합니다. 여기서는 현재 디렉터리 home/jayeshkumar/test의 경로를 사용했습니다.

27) 쉘 스크립트 내에서 산술 연산을 어떻게 사용할 수 있습니까?

다양한 내장 방법을 사용하여 쉘 스크립트 내에서 산술 연산을 수행할 수 있습니다. 쉘은 산술 확장을 사용하여 간단한 산술 계산을 위한 메커니즘을 제공합니다.

  1. 산술 확장($((…)))
  2. expr 명령 사용
  3. let 명령 사용

다음은 산술 연산의 세 가지 방법을 모두 설명하는 셸 스크립트입니다.

#!/bin/bash
숫자1=10
숫자2=5

#산술 확장 ($((…)))

결과=$((숫자1 + 숫자2))
에코 합계: $result

#expr 명령 사용

합계=$(expr $num1 + $num2)
에코 합계: $sum

#let 명령 사용

합계 = num1 + num2라고 합시다.
에코 합계: $sum

설명:

  1. `#!/bin/bash` : 이것은 Bash 쉘을 사용하여 스크립트를 해석해야 함을 지정하는 shebang입니다.
  2. `숫자1=10` 그리고` 숫자2=5` : 이 줄은 변수 `에 값 10과 5를 할당합니다. 숫자1 ` 그리고 ` 숫자 2 `, 각각.
  3. `#산술 확장 ($((…)))` : 연산 확장을 설명하는 구간의 시작을 알리는 코멘트입니다.
  4. `결과=$((숫자1 + 숫자2))` : 이 줄은 산술 확장을 사용하여 ` 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 결과 ` 변수.
  5. `에코 합계: $result` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 결과 ` 변수.
  6. `#expr 명령어 사용하기` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 특급 ` 산술 연산 명령.
  7. `합계=$(expr $num1 + $num2)` : 이 줄은 ` 특급 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를`에 저장합니다. 합집합 ` 변수. ` 특급 ` 명령에는 연산자 주위에 공백이 필요합니다.
  8. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
  9. `#let 명령 사용` : `를 사용하는 방법을 보여주는 섹션의 시작을 나타내는 주석입니다. 허락하다 ` 산술 연산 명령.
  10. `합계 = num1 + num2″` : 이 줄은 ` 허락하다 ` 합을 계산하는 명령 숫자1 ` 그리고 ` 숫자 2 ` 그리고 결과를 `에 할당합니다. 합집합 ` 변수. ` 허락하다 ` 명령에는 연산자 주위에 공백이 필요하지 않습니다.
  11. `에코 합계: $sum` : 이 줄은 `에 저장된 값을 사용하여 계산된 합계를 인쇄합니다. 합집합 ` 변수.
산수

산수

28) 네트워크 호스트에 연결할 수 있는지 확인하는 스크립트를 만듭니다.

다음은 ping 명령을 사용하여 네트워크 호스트에 연결할 수 있는지 확인하는 간단한 쉘 스크립트입니다.

#!/bin/bash
호스트=$1″
if [ -z $host ]; 그 다음에
에코 사용량: $0
1번 출구
BE
핑 -c 4 $호스트

만약 [ $? -eq 0]; 그 다음에
echo $host에 연결할 수 있습니다.
또 다른
echo $host에 연결할 수 없습니다.
BE

설명:

  1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
  2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
  3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
  4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

456

메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

#!/bin/bash
# 배열 선언
배열=(3 56 24 89 67)

# 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

최대=${배열[0]}

# 배열을 반복합니다.

${array[@]}의 숫자에 대해; 하다

# 각 요소를 현재 최대값과 비교합니다.

if ((숫자> 최대)); 그 다음에
최대=$num
BE
완료

# 최대값을 인쇄합니다

echo 배열의 최대 요소는 다음과 같습니다. $max

설명:

  1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
  2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
  3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
  4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
  5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
  6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
  7. ` 완료 `: `for` 루프가 닫혀 있습니다.
  8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
461

가장 큰 수

30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

#!/bin/bash

# 배열 선언

배열=(1 65 22 19 94)

# 합계를 저장할 변수를 초기화합니다.

합=0

# 배열을 반복하고 각 요소를 합계에 추가합니다.

${array[@]}의 숫자에 대해; 하다
오전=$((오전 + 오전))
완료

# 합계를 인쇄합니다

echo 배열 요소의 합계는 다음과 같습니다. $sum

설명:

` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

`echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

462

요소의 합

쉘 스크립트에 대해 더 알아보기

결론

우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.




1번 출구
BE
핑 -c 4 $호스트

만약 [ $? -eq 0]; 그 다음에
echo $host에 연결할 수 있습니다.
또 다른
echo $host에 연결할 수 없습니다.
BE

설명:

  1. 호스트 이름이나 IP 주소를 인수로 사용하고 인수가 제공되었는지 확인합니다.
  2. 인수가 제공되지 않으면 사용법 메시지를 표시하고 종료됩니다.
  3. -c 4 옵션과 함께 ping 명령을 사용하여 지정된 호스트에 4개의 ICMP 에코 요청을 보냅니다.
  4. ping 명령이 실행된 후 종료 상태($?)를 확인합니다. 종료 상태가 0이면 호스트에 연결할 수 있고 스크립트가 성공 메시지를 인쇄한다는 의미입니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

456

메모 : 스크립트를 실행할 때 호스트 이름을 인수로 제공해야 합니다. 여기서는 google.com을 사용했습니다.

29) 배열에서 가장 큰 요소를 찾기 위한 쉘 스크립트 작성:

다음은 배열에서 가장 큰 요소를 찾는 쉘 스크립트입니다.

#!/bin/bash
# 배열 선언
배열=(3 56 24 89 67)

# 첫 번째 요소부터 시작하여 최대값을 저장하기 위해 변수를 초기화합니다.

최대=${배열[0]}

# 배열을 반복합니다.

자바 지도

${array[@]}의 숫자에 대해; 하다

# 각 요소를 현재 최대값과 비교합니다.

if ((숫자> 최대)); 그 다음에
최대=$num
BE
완료

# 최대값을 인쇄합니다

echo 배열의 최대 요소는 다음과 같습니다. $max

설명:

  1. ` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.
  2. ` 배열=(3 56 24 89 67) `: 배열이 선언되고 값으로 초기화됩니다.
  3. ` 최대=${배열[0]} `: `max`는 배열의 첫 번째 요소로 초기화됩니다.
  4. ` ${array[@]}의 숫자에 대해; 하다 `: `for` 루프는 배열의 요소를 반복하는 데 사용됩니다.
  5. ` if ((숫자> 최대)); 그 다음에 `: `if` 문은 현재 요소 `num`이 현재 최대 `max`보다 큰지 확인합니다.
  6. ` max=$num`: If`num `가 `max`보다 크면 `max`가 num 값으로 업데이트됩니다.
  7. ` 완료 `: `for` 루프가 닫혀 있습니다.
  8. ` echo 배열의 최대 요소는 다음과 같습니다. $max `: 마지막으로 스크립트는 배열에서 찾은 최대값을 인쇄합니다.
461

가장 큰 수

30) 배열의 요소 합계를 계산하는 스크립트를 작성합니다.

#!/bin/bash

# 배열 선언

배열=(1 65 22 19 94)

# 합계를 저장할 변수를 초기화합니다.

합=0

# 배열을 반복하고 각 요소를 합계에 추가합니다.

${array[@]}의 숫자에 대해; 하다
오전=$((오전 + 오전))
완료

# 합계를 인쇄합니다

echo 배열 요소의 합계는 다음과 같습니다. $sum

설명:

` #!/bin/bash `: shebang 라인은 스크립트가 Bash 쉘을 사용하여 해석되어야 함을 지정합니다.

` 배열=(1 65 22 19 94) `: 배열이 선언되고 값으로 초기화됩니다.

` 합=0 `:` 합집합 `는 요소의 합계를 유지하기 위해 0으로 초기화됩니다.

` ${array[@]}의 숫자에 대해; 하다 `:` ~을 위한 ` 루프는 배열 요소를 반복하는 데 사용됩니다.

` 오전=$((오전 + 오전)) `: 루프 내부의 각 요소` 하나에 `가 `에 추가됩니다. 합집합 ` 변수.

` 완료 `: ` ~을 위한 ` 루프가 닫혔습니다.

`echo 배열 요소의 합계는 다음과 같습니다. $sum`: 마지막으로 스크립트는 배열에 있는 모든 요소의 합계를 인쇄합니다.

462

요소의 합

쉘 스크립트에 대해 더 알아보기

결론

우리 모두는 쉘 스크립트가 작업 생산성을 높이고 시간을 절약하는 데 매우 유용하다는 것을 알고 있습니다. 그래서 이번 글에서 다룬 내용은 매우 유용하고 대부분의 conman 쉘 스크립트 예제 30개 . 쉘 스크립팅 예제에 대한 이 완전한 가이드가 쉘 스크립트에 대한 모든 것을 이해하는 데 도움이 되기를 바랍니다.