![bash 중괄호 확장을 따옴표 내에서 수행할 수 있습니까?](https://linux55.com/image/65768/bash%20%EC%A4%91%EA%B4%84%ED%98%B8%20%ED%99%95%EC%9E%A5%EC%9D%84%20%EB%94%B0%EC%98%B4%ED%91%9C%20%EB%82%B4%EC%97%90%EC%84%9C%20%EC%88%98%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
내 것을 건조하게 만들기 위해 bashrc
이것을 바꿔 보았습니다.
CDPATH=".:~/Development:~/Development/resources:~"
이와 관련하여,
CDPATH=".:~/Development{,/resources}:~"
그러나 인용된 문자열 내에서는 중괄호 확장이 수행되지 않는 것으로 나타났습니다. 이것을 달성할 수 있는 방법이 있나요?
답변1
예, 실제로는 다음과 같습니다.
set . ~/Development{,/resources} ~
IFS=:; CDPATH="$*"
특수 인수는 각 위치 인수 사이의 "$*"
첫 번째 문자를 대체합니다. $IFS
따라서 필수 매개변수를 별도의 매개변수로 확장하면 set
할당 시 필요에 따라 적절한 구분 기호를 빠르게 채울 수 있습니다.
제안된 대로 값을 저장/복원하는 방법에 대한 몇 가지 지침을 사용할 수 있는 경우 $IFS
다음을 수행할 수 있습니다.
CDPATH=$IFS
set . ~/Development{,/resources} ~
IFS=:${IFS+;IFS=\$CDPATH}
eval 'set "$*"; unset IFS'"
$IFS; CDPATH=\$1"
때로는 환경을 깨끗하게 유지하기 위해 몇 가지 조정을 할 가치가 있습니다. 매개 변수가 설정 여부에 관계없이 환경에 영향을 미치고 이에 따라 다른 방식으로 영향을 미치는 경우 주의하는 것이 좋습니다.
그러나 이러한 예방 조치는 지속적인 제어를 보장할 수 없는 환경에서만 실제로 필요합니다. 즉, 자신의 rc 파일에서는 이 작업을 수행할 필요가 없습니다. 이와 같은 상황에서는 영구적인 통제가 거의 보장됩니다.(그리고~해야 한다)자신에게 맞는 특수 쉘 매개변수를 설정하십시오.