Trap 명령에서 사용되는 작은따옴표와 큰따옴표의 차이점은 무엇입니까?

Trap 명령에서 사용되는 작은따옴표와 큰따옴표의 차이점은 무엇입니까?

trapBash에서 signal 명령을 사용하는 방법을 배우려고 합니다 . 이 trap명령은 사용하기 매우 쉽지만, 나를 괴롭히는 질문은 작은따옴표와 큰따옴표 사용의 중요성입니다.

  • 명령에 사용되는 작은따옴표와 큰따옴표의 차이점은 무엇입니까 trap?

  • 두 가지 용도의 차이점을 명확하게 보여주기 위해 몇 가지 간단한 예를 들어주실 수 있나요?

답변1

trap명령은 문자열을 쉘 명령으로 처리합니다(예 eval: 문자열은 확장을 위해 처리되므로 큰따옴표와 작은따옴표의 차이점은 첫 번째 확장이 발생할 때). 큰따옴표는 트랩이 설정될 때 발생하고, 작은따옴표는 트리거될 때 발생합니다.

예를 들어 다음은 break 에 foo=1인쇄 되지만 read작은따옴표를 사용하면 다음과 같이 인쇄됩니다 foo=2.

#!/bin/bash
foo=1
trap "echo foo=$foo; exit" INT
foo=2
read          # hit Ctrl-C here

물론, 큰따옴표를 사용해도 생성된 명령은 트랩이 실행될 때 확장되므로 foo=$0위의 트랩 앞 줄에서 스크립트가 중단될 때 스크립트 이름을 인쇄하게 됩니다.

관련 정보