"너무 많은 인수"가 발생하는 이유는 무엇입니까?

"너무 많은 인수"가 발생하는 이유는 무엇입니까?

이것은 3행에 매개변수가 너무 많다는 것을 알려주는 스크립트의 일부입니다.

#!/bin/bash
export LC_ALL='C'
if [ `echo "*file 2" | grep -o ^.` = '.' ]
then
    echo success
fi

이유를 아는 사람 있나요? 제가 아는 한, 저는 단지 두 매개변수 "*"와 "."를 비교하고 있을 뿐입니다.

답변1

echo "*file 2" | grep -o ^.인쇄 *.

큰따옴표 외부에 명령 대체가 있으므로 와일드카드(일명 와일드카드 일치, 일명 파일 이름 생성) 및 토큰화를 거칩니다. 현재 디렉터리가 비어 있지 않으면 *현재 디렉터리의 파일 목록으로 확장됩니다. 각 파일은 [명령에서 토큰이 되며 이는 구문 오류일 가능성이 높습니다.

문제는 명령 대체에 큰따옴표를 사용하지 않는다는 것입니다.변수 및 명령 대체에는 항상 큰따옴표를 사용하십시오.그들을 무시할 합당한 이유가 없다면 말이죠.

if [ "$(echo "*file 2" | grep -o ^.)" = '.' ]

바라보다공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?더 자세한 설명을 원하시면.

관련 정보