매개변수에 대한 쉘 확장?

매개변수에 대한 쉘 확장?

예를 들어:

mkdir ~/{1,2,3}

디렉토리 를 생성 하고 ~/1. 이는 다음과 같습니다:~/2~/3

mkdir ~/1
mkdir ~/2
mrdir ~/3

그러나 다음과 같은 경우에는 동일한 구문이 사용됩니다 CMD < argument >.

brew {install, update, doctor}

... 쉘 설명에는 말도 안됩니다. 이것은 다음을 의미하지 않습니다:

brew install
brew update
brew doctor

빠르게 스크립트를 만드는 것은 쉽지만,있어야 한다Bash에서 확장 또는 교체를 사용하는 것이 더 쉬운 방법입니다. 내가 무엇을 놓치고 있나요?

실행 Bash 3.2.57(1)-release대상OS X 10.10.2

답변1

xargs당신이 원하는 것 같습니다 :

echo install update doctor | xargs -n1 brew

답변2

첫 번째 공백을 탈출하고 나머지 공백을 제거합니다.

$ printf "'%s'\n" brew\ {install,update,doctor}
'brew install'
'brew update'
'brew doctor'

brew명령인 경우 다음과 같이 작성하세요(공백 없이) .

brew {install,update,doctor}

mkdir 예제와 같습니다:

mkdir {install,update,doctor}

이를 수행하기 위해 외부 프로세스나 파이프가 필요하지 않습니다. 모든 작업은 쉘 내에서 수행할 수 있습니다 bash.

답변3

어떻습니까(백슬래시에 주의하세요, 매우 중요합니다):

echo brew\ {install,update,doctor}\;| bash

첫 번째 패턴(의 매개변수 echo)은 다음과 같이 확장됩니다.

echo brew install; brew update; brew doctor;

그런 다음 이는 에코되어 다음과 같은 출력을 생성합니다.

brew install; brew update; brew doctor;

이를 새로운 bash 인스턴스로 전송합니다.

관련 정보