Bash 변수란 무엇이며 어떻게 사용할 수 있습니까?
Bash를 사용하면 전체 텍스트 문자열을 단일 변수에 매핑하여 사용 및 스크립트 작성을 단순화할 수 있습니다. 어떻게 작동하며 어떻게 사용할 수 있습니까? 알아 보자.
Bash 변수란 무엇입니까?
변수는 다른 영숫자 값을 포함할 수 있는 기억하기 쉬운 이름입니다. 스크립트/코드 조각을 다시 작성할 필요 없이 동일한 기능을 다른 값에 적용할 수 있으므로 유용합니다. 또한 개별 값을 처리하는 대신 모든 값에 동일한 이름을 사용할 수 있으므로 스크립트/코드를 쉽게 작성할 수 있습니다.
실시간 변수
Bash는 변수 사용을 허용합니다. 즉시 변수를 생성하고 현재 Bash 세션 중에 재사용할 수 있습니다. 다양한 방법으로 Bash 사용을 지원할 수 있으며 현재 세션이 끝나면 사라집니다.
예를 들어 여러 사이트를 방문한다고 가정해 보겠습니다. 조사를 수행하거나 데이터를 스크랩 하고 다음 변수를 만들 수 있습니다 .
sitea=https://www.maketecheasier.com
그런 다음 Firefox로 당사 사이트를 방문하려면 다음을 입력하면 됩니다.
firefox $sitea
훨씬 더 쉽고 읽기 쉽습니다. 변수 $sitea
는 내용을 수동으로 변경하거나 Bash 세션이 종료될 때까지 사이트에 매핑된 상태로 유지됩니다. 물론 , siteb
, sitec
와 같은 더 많은 변수를 생성할 수 있습니다 sited
.
새 변수를 설정할 때 원하는 이름을 사용하고 그 안에 영숫자 문자열을 저장할 수 있습니다. 하지만 기본적으로 대소문자를 구분한다는 점을 명심하세요. 따라서 는 와 $sitea
동일하지 않습니다 $SiteA
. 또한 내부에 특수 문자(공백 포함)가 있는 문자열을 저장할 때는 따옴표를 사용해야 합니다.
스크립트의 변수
Bash의 변수는 스크립트를 작성할 때 더 유용합니다. 단일 스크립트를 작성한 다음 다른 문자열을 반복하거나 사용자 정의된 데이터 조각에 대해 작동할 수 있기 때문입니다. 모든 사람이 자신의 컴퓨터에서 사용할 수 있지만 매번 개인화된 인사말을 표시하는 스크립트를 작성한다고 가정해 보겠습니다. 변수가 없으면 각 사용자에 대해 다른 버전의 스크립트를 작성해야 합니다. 변수를 사용하면 스크립트를 동일하게 유지하고 사용자 이름만 변경합니다.
이러한 스크립트는 다음과 같습니다.
#!/bin/bash
username=Ramces
echo $username
위의 예는 중복되는 것처럼 보일 수 있습니다. 그러나 코드의 복잡성이 증가함에 따라 변수는 필수 불가결합니다. 스크립트는 수백 또는 수천 줄 길이가 될 수 있으며 다른 위치에 사용자 이름을 포함할 수 있습니다. 더 잘 이해하려면 다음과 같은 다소 다른 스크립트를 고려하십시오.
#!/bin/bash
username=Linus
echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
위 스크립트는 username
변수로 정의된 이름을 사용하여 텍스트를 완성합니다. 실제 사용자의 이름을 사용하는 경우 네 번 입력하고 다음 사용자에 대해 동일한 작업을 수행하고 다음 사용자에 대해 다시 네 번 입력해야 합니다. 계속해서. 변수에 할당하면 각 사용자에 대해 한 번만 변경하면 되며 텍스트에서 사용자 이름에 대한 모든 언급이 업데이트됩니다.
영구 Bash 변수 및 별칭
일시적으로 변수를 설정하는 방법과 보다 영구적인 변수를 자신의 스크립트에 포함하는 방법을 살펴보았습니다. “~/.bashrc” 파일을 편집하여 Bash에서 영구적으로 변수를 설정할 수도 있습니다.
- 선호하는 텍스트 편집기에서 “~/.bashrc” 파일을 엽니다.
nano ~/.bashrc
- 프로세스가 제대로 작동하지 않는 경우 확인할 위치를 알 수 있도록 단일 변수만 추가하여 테스트 실행을 시작하는 것이 좋습니다. 파일 끝으로 이동하고 새 줄에 변수를 추가합니다.
myname="Ramces Red"
- 파일을 저장하고 편집기를 종료합니다. 수정 사항은 즉시 적용되지 않습니다. 적용하려면 터미널에 다음을 입력하십시오.
source ~/.bashrc
- Bash 세션에서 새로 설정된 변수를 사용하십시오.
echo $myname
원하는 만큼 변수를 설정하고 Bash에서 일상적인 모험을 크게 단순화할 수 있습니다.
생산성을 추가로 높이려면 다른 유형의 변수인 별칭을 설정하는 것도 좋습니다. 명령에서 사용할 수 있는 데이터에 매핑되는 일반적인 변수와 달리 실제 명령 대신 별칭이 사용됩니다.
기억하기 쉬운 변수를 사용하여 긴 텍스트 문자열을 저장할 수 있는 것처럼 별칭을 복잡한 명령에 대한 쉬운 대안으로 사용할 수 있습니다.
마지막으로 bashrc에 영구적으로 변수를 설정했더라도 이전에 본 것처럼 일시적으로 다른 값을 다시 할당할 수 있습니다. 이 변수는 현재 Bash 세션이 종료되거나(로그아웃 또는 다시 시작한 후) 리소스를 다시 소싱할 때까지 새 콘텐츠를 표시합니다. bashrc 파일.
어레이 생성
대부분의 Bash 사용자는 변수를 데이터 조각과 레이블 사이의 단순한 링크로 생각하지만 변수를 배열의 마커로 사용할 수도 있습니다. 이들은 번호가 매겨진 인덱스 형식으로 여러 값을 저장할 수 있는 데이터 구조 유형입니다. 배열을 만들려면 다음 단계를 따르십시오.
- 빈 셸 스크립트를 만듭니다.
nano array.sh
- 하위 명령을 사용하여
declare
현재 셸 프로세스에서 Bash 배열을 초기화합니다.
declare -a myarray
- 기본 제공 Bash 할당 연산자를 사용하여 새 배열을 채웁니다. 예를 들어 다음 코드 줄은 내부에 5개의 요소가 있는 배열을 만듭니다.
myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)
echo
데이터를 가져오는 명령을 사용하여 새 어레이가 작동하는지 테스트합니다 .
echo ${myarray[1]}
“*” 연산자를 사용하여 배열의 내용을 스트리밍할 수도 있습니다.
echo ${myarray[*]}
서브쉘 변수 실행
Bash의 가장 큰 기능 중 하나는 프로그램이 기본 기능인 것처럼 실행할 수 있는 하위 셸을 만드는 기능입니다. 예를 들어, ls -a
쉘 스크립트를 작성하고 실행하면 여전히 현재 작업 디렉토리의 내용이 인쇄됩니다.
이것이 제한적으로 보일 수 있지만 Bash는 이러한 프로그램의 출력을 변수 안에 저장할 수 있도록 허용하여 이를 확장합니다. 이를 통해 스크립트 내부의 다른 프로그램에 대한 입력으로 사용할 수 있습니다.
- 하위 셸 변수를 사용하려면 먼저 빈 셸 스크립트를 만듭니다.
nano subshell.sh
- 새 셸 스크립트 내에 다음 상용구 코드를 작성합니다.
#!/bin/bash
mysubshell=$(x)echo "The output of the variable is $mysubshell"
- “x”를 실행하고 출력을 저장하려는 명령으로 바꾸십시오. 예를 들어 다음은 world.txt 파일의 내용을 가져오고 “world”라는 단어를 “maketecheasier”로 바꿉니다.
mysubshell=$(sed s/world/maketecheasier/g world.txt)
- 새 스크립트를 실행하여 새 서브쉘 변수를 테스트하십시오.
chmod u+x. /subshell.sh
bash. /subshell.sh
하위 문자열 조작
데이터를 저장하고 검색하는 것 외에도 변수의 내용을 수정할 수도 있습니다. Bash에는 모든 변수 끝에 첨부할 수 있는 일련의 연산자가 있으므로 추가 프로그램을 호출하지 않고도 스크립트를 미세 조정할 수 있습니다.
- 빈 셸 스크립트를 만듭니다.
nano substring.sh
- 빈 스크립트 안에 다음 상용구 코드를 작성합니다.
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring}"
- 기본 하위 문자열 조작은 세 가지 형식으로 제공됩니다. 먼저 “#” 문자는 셸이 변수의 시작 부분에서 제거할 정규식 패턴을 허용합니다.
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring#*.}"
- 둘째, “%” 문자는 셸이 변수 끝에서 제거할 정규식 패턴도 허용합니다.
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring%.*}"
- Bash는 변수의 내용을 선택적으로 수정하는 방법도 제공합니다. 프로그램 과 유사하게
sed
“/” 문자를 사용하여 변수 내의 모든 문자열을 찾고 바꿀 수 있습니다.
#!/bin/bash
mysubstring=hello.txt
echo "My filename is: ${mysubstring/hello/maketecheasier}"
자주 묻는 질문
변수 내에서 쉘 스크립트를 실행할 수 있습니까?
예, 실행할 스크립트의 전체 경로를 작성하면 됩니다. 예를 들어 실행하면 $(/home/ramces/.scripts/sample.sh)
Bash 하위 셸이 생성되고 내 홈 디렉터리에서 “sample.sh” 스크립트가 실행됩니다.
스크립트가 실행되는 동안 변수를 제거할 수 있습니까?
예. unset
하위 명령 뒤에 변수 이름을 스크립트에 삽입하여 실행 중인 셸 프로세스에서 변수를 제거할 수 있습니다 . 이 명령을 실행해도 현재 셸 프로세스 외부에서 실행되는 변수는 제거되지 않는다는 점에 유의해야 합니다.
외부 쉘 스크립트 내에서 영구 변수를 사용할 수 있습니까?
예. 현재 쉘 프로세스 외부에서 선언된 변수의 값을 참조할 수 있습니다. 그러나 외부 변수를 사용할 때도 일시적으로 덮어쓰기가 쉽기 때문에 주의해야 합니다.
이미지 크레디트: Unsplash . Ramces Red의 모든 변경 및 스크린샷.
답글 남기기