변수 대체 구문을 통합할 수 있나요?

변수 대체 구문을 통합할 수 있나요?

이 두 가지 변수 대체 구문을 하나로 결합할 수 있습니까?

rm "$s_a/$domain.conf" 2>/dev/null
rm "$s_e/$domain.conf" 2>/dev/null

좋다:

rm "$s_{a,e}/$domain.conf" 2>/dev/null

답변1

할 수 있는, 그러나 확장을 인용할 때는 그렇지 않습니다(큰따옴표는 문자 그대로의 의미를 유지하기 때문입니다).최대중괄호를 포함한 "특수 문자"):

rm $s_{a,e}/$domain.conf

점차적으로 다음으로 확장합니다.

rm $s_a/$domain.conf $s_e/$domain.conf

그런 다음 해당 값으로 이동합니다.

큰따옴표 안에 중괄호만 남겨져 있으므로 줄은 다음과 같이 확장됩니다.

RM($s_의 값){a,e}/($domain의 값)구성 파일

인용은 의도하지 않은 확장, 특히 단어 분리 및 파일 이름 확장을 방지합니다. 설정을 해제하여 단어 분할 문제를 해결할 수 $IFS있고 로 파일 이름 확장 문제를 해결할 수 있습니다. set -f조합은 다음과 같습니다.

oIFS=$IFS
IFS=
set -f
rm $s_{a,e}/$domain.conf 2>/dev/null
IFS=$oIFS
set +f

관련 정보