Windows에서는 MSYS2를 사용하여 실행 파일의 파일 확장자를 출력에 다시 추가하고 싶습니다( which
있는 경우). 다음 줄은 다음과 같습니다.
locAlt="$(which "mingw32-make")" ; echo "$locAlt" ; locAlt=("$locAlt"+(|.*)) ; echo "$locAlt"
이것은 내 컴퓨터에서 잘 작동하고 인쇄됩니다.
/mingw64/bin/mingw32-make
/mingw64/bin/mingw32-make.exe
그러나 이제 스크립트( one-liner.sh
)에 동일한 줄을 넣었습니다.
#/bin/bash
locAlt="$(which "mingw32-make")" ; echo "$locAlt" ; locAlt=("$locAlt"+(|.*)) ; echo "$locAlt"
나는 시도 nano
하고 Notepad++
(줄 끝을 선택하고 "UNIX (LF)"로 설정할 수 있음) cat -v one-liner.sh
위에 표시된 파일을 보여주는 출력을 확인했습니다 (아니요 ^M
,이 문제). 그러나 다음을 ./one-liner.sh
사용하여 파일을 실행하려고 하면
./one-liner.sh: line 2: syntax error near unexpected token `('
./one-liner.sh: line 2: `locAlt="$(which "mingw32-make")" ; echo "$locAlt" ; locAlt=("$locAlt"+(|.*)) ; echo "$locAlt"'
왜 그럴까요?
답변1
그것은 밝혀졌다이 답변적용 가능합니다. shopt -s extglob
작동하도록 스크립트에 추가되었습니다 . 분명히 구문은 +(
... 이미 "확장된 와일드카드"에 속합니다.