이 두 가지 변수 대체 구문을 하나로 결합할 수 있습니까?
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