초보자 가이드 BASH - 입력 매개 변수

BASH 시리즈 초급 가이드의 두 번째 부분에 오신 것을 환영합니다. BASH 시리즈는 초보자가 초급자를 위해 작성한 유일한 BASH 튜토리얼입니다.

이 안내서를 읽는 독자는 지식을 쌓아 올리며, 지식의 끝까지 다행스럽게도 영리한 스크립트를 작성할 수 있습니다.

지난 주 나는 단순히 "Hello World"라는 단어를 표시하는 첫 번째 스크립트작성하는 방법을 다루었습니다. 텍스트 에디터, 터미널 창을 여는 방법, 스크립트를 넣을 곳, 인용문 ( "")과 같은 이스케이프 문자에 "Hello World"라는 단어와 몇 가지 미세한 점을 표시하는 방법과 같은 주제를 다룹니다.

이번 주에는 입력 매개 변수를 다룰 것입니다. 이런 종류의 것을 가르치는 다른 가이드가 있지만 나는 그들이 상당히 낮은 수준의 것들로 뛰어 들어가서 너무 많은 정보를 제공 할 것이라고 생각합니다.

매개 변수 란 무엇입니까?

마지막 튜토리얼의 "Hello World"스크립트에서는 매우 정적이었습니다. 스크립트는별로 효과가 없었습니다.

"Hello World"스크립트를 어떻게 개선 할 수 있습니까?

그것을 실행하는 사람을 환영하는 스크립트는 어떻습니까? "Hello World"라고 말하는 대신 "Hello Gary", "Hello Tim"또는 "Hello Dolly"라고 말합니다.

입력 매개 변수를 허용하지 않으면 "hellogary.sh", "hellotim.sh"및 "hellodolly.sh"스크립트를 작성해야합니다.

스크립트가 입력 매개 변수를 읽을 수있게함으로써 누군가에게 인사하기 위해 하나의 스크립트를 사용할 수 있습니다.

이렇게하려면 터미널 창 (CTRL + ALT + T)을 열고 다음을 입력하여 스크립트 폴더로 이동하십시오. ( cd 명령에 대해 )

CD 스크립트

다음을 입력하여 greetme.sh라는 새 스크립트를 작성하십시오. ( about touch 명령 )

touch greetme.sh

다음을 입력하여 좋아하는 편집기에서 스크립트를 엽니 다. ( about nano 명령 )

나노 greetme.sh

nano 내에 다음 텍스트를 입력하십시오.

#! / bin / bash echo "hello $ @"

CTRL과 O를 눌러 파일을 저장 한 다음 CTRL과 X를 눌러 파일을 닫습니다.

스크립트를 실행하려면 명령 줄에 다음을 사용자 이름으로 바꾸십시오.

sh greetme.sh

내 이름으로 스크립트를 실행하면 "Hello Gary"라는 단어가 표시됩니다.

첫 번째 행에는 파일을 bash 스크립트로 식별하는 데 사용되는 #! / bin / bash 행이 있습니다.

두 번째 줄은 echo 문을 사용하여 hello라는 단어를 echo 한 다음 이상한 $ @ 표기법을 사용합니다. ( 에코 명령에 대해 )

$ @는 스크립트 이름과 함께 입력 된 모든 매개 변수를 표시하도록 확장합니다. 따라서 "sh greetme.sh tim"을 입력하면 "hello tim"이라는 단어가 표시됩니다. "greetme.sh tim smith"를 입력하면 "hello tim smith"라는 단어가 표시됩니다.

greetme.sh 스크립트가 단지 이름을 사용하여 인사하는 것이 좋을 수도 있습니다. 그들이 나를 만날 때 "hello gary newell"이라고 말하면 아무도 "hello gary"라고 말할 수 있습니다.

첫 번째 매개 변수를 사용하도록 스크립트를 변경해 보겠습니다. 다음을 입력하여 nano에서 greetme.sh 스크립트를 엽니 다.

나노 greetme.sh

다음과 같이 스크립트를 변경하십시오.

#! / bin / bash echo "hello $ 1"

CTRL과 O를 눌러 스크립트를 저장 한 다음 CTRL과 X를 눌러 종료하십시오.

다음과 같이 스크립트를 실행하십시오 (내 이름을 바꿉니다).

sh greetme.sh 게리 뉴웰

스크립트를 실행하면 간단히 "hello gary"라고 표시됩니다 (또는 희망이 있으면 "hello"및 귀하의 이름이 무엇이든간에).

$ 기호 다음에 오는 1은 기본적으로 echo 명령에 대해 말하며 첫 번째 매개 변수를 사용합니다. $ 1을 $ 2로 바꾸면 "hello newell"(또는 귀하의 성이 무엇이든)이 표시됩니다.

덧붙여서 $ 2를 $ 3로 바꾸고 스크립트를 단지 2 개의 매개 변수로 실행하면 출력은 단순히 "Hello"가됩니다.

실제로 입력 된 매개 변수 수를 표시하고 처리 할 수 ​​있으며 나중에 튜토리얼에서 유효성 검사를 위해 매개 변수 수를 사용하는 방법을 보여줍니다.

입력 된 매개 변수의 수를 표시하려면 greetme.sh 스크립트 (nano greetme.sh)를 열고 다음과 같이 텍스트를 수정하십시오.

#! / bin / bash echo "당신은 $ # names를 입력했습니다"echo "hello $ @"

CTRL과 O를 눌러 스크립트를 저장하고 CTRL과 X를 눌러 nano를 종료하십시오.

두 번째 행의 $ #는 입력 된 매개 변수의 수를 표시합니다.

지금까지이 모든 것은 참신했지만 아주 유용하지는 않았습니다. 누가 "hello"를 단순히 표시하는 스크립트가 필요합니까?

echo 문에 대한 실제 사용법은 사용자에게 장황하고 의미있는 출력을 제공하는 것입니다. 심각한 번호 계산과 파일 / 폴더 조작을 포함하는 복잡한 작업을 원한다고 상상할 수 있다면 각 단계에서 어떤 일이 일어나는지 사용자에게 표시하는 것이 유용 할 것입니다.

반대로 입력 매개 변수는 스크립트를 대화 형으로 만듭니다. 입력 매개 변수가 없다면 수십 개의 스크립트가 모두 비슷하지만 약간 다른 이름을 필요로합니다.

이 모든 것을 염두에두고 다른 유용한 입력 매개 변수를 알아 두는 것이 좋습니다. 모든 코드를 하나의 코드 조각에 포함시킵니다.

greetme.sh 스크립트를 열고 다음과 같이 수정하십시오.

#! / bin / bash echo "파일 이름 : $ 0"프로세스 ID : $$ "echo"---------------------------- --- "echo"입력 한 # $ names "echo"hello $ @ "

CTRL과 O를 눌러 파일을 저장하고 CTRL과 X를 눌러 종료하십시오.

이제 스크립트를 실행하십시오 (귀하의 이름으로 대체하십시오).

sh greetme.sh

이번에는 스크립트가 다음을 표시합니다.

파일 이름 : greetme.sh 프로세스 ID : 18595 ------------------------------ 2 개의 이름을 입력했습니다. hello gary newell

스크립트의 첫 번째 행에있는 $ 0은 실행중인 스크립트의 이름을 표시합니다. 달러 0이 아니라 달러 0이라는 점에 유의하십시오.

두 번째 줄의 $$는 실행중인 스크립트의 프로세스 ID를 표시합니다. 왜 이것이 유용한가요? 포 그라운드에서 스크립트를 실행중인 경우 CTRL과 C를 눌러 취소 할 수 있습니다. 백그라운드에서 스크립트를 실행하고 루핑을 시작하고 동일한 작업을 반복하거나 시스템에 손상을 입히기 시작한 경우 그것을 죽일.

백그라운드에서 실행중인 스크립트를 죽이려면 스크립트의 프로세스 ID가 필요합니다. 스크립트가 프로세스 ID를 출력의 일부로 제공하면 좋지 않을까요? ( 약 ps 및 kill 명령 )

마지막으로이 주제로 끝내기 전에 출력물의 위치에 대해 논의하고 싶었습니다. 지금까지 스크립트가 실행될 때마다 출력이 화면에 표시됩니다.

스크립트 출력을 출력 파일에 기록하는 것이 일반적입니다. 이렇게하려면 다음과 같이 스크립트를 실행하십시오.

sh greetme.sh gary> greetme.log

위의 명령에서> 기호는 greetme.log라는 파일에 "hello gary"텍스트를 출력합니다.

> 기호로 스크립트를 실행할 때마다 출력 파일의 내용을 덮어 씁니다. 파일에 추가하는 것을 선호한다면>를 >>로 대체하십시오.

개요

이제 화면에 텍스트를 쓰고 입력 매개 변수를 받아 들일 수 있어야합니다.