IT 프로그래밍/오픈소스소프트웨어

[오픈소스소프트웨어] chap 9-2 쉘 변수

기술1 2024. 10. 14. 16:59
반응형

쉘 변수의 값

지금까지 변수의 값을 꺼내기 위해 $varname을 사용했습니다.

 

하지만 보다 일반적인 방법은 ${varname}을해주어야 하는 것입니다. 이는 불필요한 에러를 줄여주기 때문입니다.

 

문자열 연산자를 이용하여 변수의 값을 다양한 방법으로 조작

  • 변수가 존재하는지 확인
  • 변수의 default값을 설정
  • 존재하지 않는 변수를 사용하려는 오류 적절히 처리
  • 변수 값의 일부를 패턴 매칭을 통해서 제거

 

 

변수 var이 존재하고 null이 아니면 word를 리턴 아니면 null을 리턴

 

4의 인덱스에서 이후 4번값까지 출력

 

 

실습1

하지만 이 경우 문자로 해석하기 때문에 정상적으로 해석이 안됩니다. 

이렇게 sort를 하면 됩니다.

이렇게 하면 역순으로 출력이 됩니다.

위에서 20개만 출력하도록 할 수 있습니다.

 

 

문자열 연산 : Pattern Matching

${var#pattern}

$var 문자열의 앞에서부터 pattern을 매칭시키는 가장 짧은 서브스트링이 있으면, 그것을 제거한 나머지 부분을 리턴

 

${var##pattern}

$var 문자열의 앞에서부터 pattern을 매칭시키는 가장 긴 서브스트링이 있다면, 그것을 제외한 나머지 부분을 리턴

 

${var%pattern}

$var문자열 뒤에서부터 pattern을 매칭시키는 가장 긴 서브스트링이 있다면, 그것을 제거한 나머지 부분을 리턴

 

${var%%pattern}

 

 

환경변수 PATH에 포함된 디렉토리들을 한 줄에 하나씩 프린트하기

콜론을 -로 바꿔주는 것을 볼 수 있습니다.

 

치환하고 다음 라인으로 넘기는 것을 볼 수 있습니다. e를 붙이면 저것을 문자로 인식하는 것이 아닌 해석을 하는 것을 볼 수 있습니다.

 

명령어 대입

명령어를 실행하고 그 결과를 이렇게 집어넣는 것입니다.

 

$(pwd)는 현재 디렉토리를 변수처럼 만들어줍니다.

 

content라는 변수를 설정해 변수처럼 쓰는 것을 볼 수 있습니다. $(<파일명)은 파일명의 내용이 됩니다. 단 개행문자를 제거됩니다.

 

v $(grep[ -| 'command substitution' ch*)

이것은 grep 명령의 -| 옵션은 패턴이 매칭되는 파일명만을 출력합니다(매칭 라인을 출력하지 않음)

큰따음표 같은 경우 정상적으로 $(ls) 를 실행하는 것을 볼 수 있습니다.

 

이는 ls 명령어의 실행 결과(즉, 현재 디렉토리에 있는 파일 목록)를 가져와 다른 명령어에 사용하거나 변수로 저장하는 역할을 합니다.

 

실습

 

반응형