따옴표 안에 와일드 카드


32

이것은 쉬운 일이지만, 내 기억에서 쉘 스크립팅 할 때 큰 따옴표를 사용하면 globbing 및 변수를 확장 할 수 있습니다.

그러나 다음 코드에서 :

#!/bin/sh

echo *.sh
echo "*.sh"
echo '*.sh'

echo $LANG
echo "$LANG"
echo '$LANG'

나는이 결과를 얻는다 :

bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG

작은 따옴표는 glob AND 변수 확장을 방지하지만 큰 따옴표는 변수 확장 만 허용하고 globbing은 허용하지 않습니까?

인용 패턴을 사용할 수 있습니까?

답변:


26

맞습니다 : 작은 따옴표 나 큰 따옴표에서 글 로빙이 작동하지 않습니다. 그러나 큰 따옴표로 묶은 문자열로 globbing을 보간 할 수 있습니다.

$ echo "hello world"* .sh "안녕 세상"
안녕 세상 [파일 목록] 안녕 세상

6
또는 심지어 echo "$hello and $goodbye".*(같은 "단어"에서 변수 확장, 공백 및 glob를 혼합하십시오.
vonbrand

1
이 경우 글 로빙이 작동하지 않는 것 같습니다 echo /path/to/file/*${variable}. 보간 된 이메일을 추가 할 때 어떻게 봅니까?
CMCDragonkai

2
@CMCDragonkai echo "$FOLDER_PATH"/*.extension는 받아 들인 대답과 달리 나와 잘 작동합니다. 와와 사이의 공백을 제거해야 "했습니다 *. 도움이 되길 바랍니다.
LostBalloon

@CMCDragonkai, @LostBalloon 공백이있을 수있는 변수와 함께 glob를 사용하려면 다음 패턴을 사용합니다.(cd "$FOLDER_PATH" && echo *.extension)
Steven Darnell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.