
trap
Bash에서 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
위의 트랩 앞 줄에서 스크립트가 중단될 때 스크립트 이름을 인쇄하게 됩니다.