이것은 fetchmail 데몬 스크립트의 일부입니다.
if [ ! "x$START_DAEMON" = "xyes" -a ! "$1" = "status" ]; then
그것을 사용하는 이유는 무엇입니까 x$START_DAEMON = "xyes"
? 그냥 사용하지 않는 이유는 무엇입니까 $START_DAEMON = "yes"
?
답변1
x$variable
그런 경우를 본 적이 있어요아니요이 경우 참조는 $START_DAEMON
변수(이 경우)가 비어 있을 수 있는 경우를 처리하는 것입니다. 그렇지 않으면 테스트에서 가 있는지 확인 ! = "yes"
하고 오류가 발생합니다. 그러나 귀하의 의견에서 지적했듯이 큰따옴표가 x$variable
이 문제를 해결합니다.
반면에 질문은서버 장애이 페이지로 이동합니다:http://pubs.opengroup.org/onlinepubs/009695399/utilities/test.html, 그 중 하나는 잠재적으로 혼란스럽거나 혼란스러운 변수 확장을 방지하는 것입니다 [
.test
그럼에도 불구하고 나는 이것이 오래된 (오픈 그룹 페이지에 명시된 것처럼 "역사적") 쉘의 문제일 수 있다고 생각하며, x
최신 구현은 적어도 큰따옴표가 관련된 한 쉘 없이도 올바른 작업을 수행합니다. 따라서 이것은 아마도 대부분 코딩 전통일 것입니다. /bin/sh
그러나 SunOS 5.10에서 사용할 때 문제가 있음을 확인했습니다.
# a="!"; [ "$a" = "yes" ] && echo ok
test: argument expected