쉘 스크립트에서 ’ ’, ” ”, ` ` 및 괄호 기능과 차이점

Devvoo·2024년 5월 28일
0

Shell Script

목록 보기
1/1
  • 따옴표 ' '

    • 따옴표로 감싸진 문자열은 문자열 그대로 유지되어 출력된다. (Bash 변수 사용 불가능)
    • 따옴표에서는 특수기호 이스케이핑을 해주지 않아도 문자 그 자체로 출력이 가능하다.
  • 쌍따옴표 " "

    • 쌍따옴표로 감싸진 문자열 내에서는 Bash에서 선언한 변수사용이 가능하다.
  • 백틱 ` `

    • 리눅스 쉘에서 백틱은 $()와 함께 명령어 대체(command subtitution)로 분류되는 표현식이다. 백틱 또는 $()괄호 안에 기술하는 명령어를 하위 쉘이 실행하고 그 출력 결과를 문자열로 대체하여 준다.

    • 권장 사항

    • 주의할 점

      • 명령어 대체는 현재 환경 기준으로 하위 쉘을 통해 수행되므로 만약 둘러싸고 있는 명령이 원격이나 다른 환경에서 실행된다면 서로 다른 환경에서 실행될 수 있다는 점을 유의해야 한다.

        # xargs는 주어진 입력으로 다른 명령어를 실행하도록 도와줌.
        # -I : -I 옵션 뒤에 replace-str을 정의하고 replace-str가 모두 xargs에 전달된 인수로 대체됨
📝 출처: https://shanta.tistory.com/18
        https://jjeongil.tistory.com/1574

따옴표(‘ ’)를 사용해야 할 때

  • 문자열 그 자체가 존중되고 싶을 때
  • 특수문자가 많이 포함된 문자열의 경우, 백슬래시(\)를 사용해가며 일일이 Escaping을 해주기 귀찮을 때

쌍따옴표(“ ”)를 사용해야 할 때

  • 문자열 내에 Bash 변수를 삽입해 새로운 문자열을 동적으로 만들어 내야 할 때
  • \n, \t, \a와 같이 이스케이프 코드를 삽입해야 할 때

[] () {} 정리

  • []: 배열 인덱스, 테스트 조건을 정의

    (와일드 카드) [ ]: 문자 범위 지정하는 특수문자, []괄호 안에 포함된 문자 중 하나를 나타냄

    • [[]]: 기본적으로 단일 대괄호와 동일한 기능을 수행하지만 bash 내장
  • (): 함수 인수의 시작과 끝, 서브 쉘 작성, 배열 초기화

    • 스크립트의 다른 곳에서는 소괄호 안 서브 쉘에 들어있는 변수를 볼 수 없음
    • 소괄호 안의 명령어들은 현재 쉘 환경과는 별도의 서브 쉘 환경에서 실행된다.
    • 예를 들어, (명령어1; 명령어2)명령어1명령어2를 서브 쉘에서 실행
  • {}: 명령 블록의 시작과 끝, 각종 변수의 존재범위도 연관됨, 매개변수 확장, 반복되는 문자열 목록 작성, 변수를 명확하게 식별

    • 중괄호 안의 명령어들은 현재 쉘 환경에서 실행된다.
    • 예를 들어, { 명령어1; 명령어2; }명령어1명령어2를 같은 쉘 환경에서 실행

📝 출처: https://coding-chobo.tistory.com/54

profile
Cloud & DevOps Engineer; 루트 노드를 향하여!

0개의 댓글