에코 작업에 포함해서는 안 되는 일부 텍스트가 포함되어 있습니다.

에코 작업에 포함해서는 안 되는 일부 텍스트가 포함되어 있습니다.

Composer가 포함된 WSL Ubuntu 16.04(Xenial)에서 다음을 실행했습니다.

echo 2 * 3 > 5 is a valid inequality 

5다음 내용으로 이름이 지정된 파일이 생성되었습니다 .

2composer-setup.php 3은 유효한 부등식입니다.

echo여기에도 텍스트가 포함되는 이유는 모르겠습니다 . composer-setup.php5(파일 이름)를 제외하고 왼쪽에서 오른쪽으로 모든 내용을 포함해야 합니다. echo단일 텍스트 스트림을 리디렉션된 파일 이름으로 사용할 수 있기 때문입니다(내가 아는 한에는 그렇지 않습니다). 공백이 허용되므로 이름이 5)입니다.

composer-setup.php왜 2~3 사이에 나오는 걸까요 ?

답변1

실행한 명령줄에는 두 개의 셸 특수 문자( *및 ) 가 포함되어 있습니다 >. 당신이 보는 것은 현재 디렉토리에 있는 모든 1개의> 파일을 선택하는 와일드카드/와일드카드 입니다 . 현재 디렉토리에 Composer-setup.php라는 파일이 있습니다.*

명령줄을 인용하세요. 텍스트에 작은따옴표가 없으면 작은따옴표가 작동합니다.

echo '2 * 3 > 5 is a valid inequality'

1: 쉘 옵션(예: dotglob)을 특별히 설정하지 않는 한 마침표로 시작하지 않는 모든 파일(또는 디렉터리, 소켓 등)~할 수 있게 하다파일 와일드카드를 클릭합니다.

답변2

여기서는 두 가지 일이 일어나고 있습니다.

먼저, 쉘은 *문자를 확인하고 이를 현재 디렉토리의 파일 목록으로 대체합니다. 이것을 '와일드카드'라고 합니다.

또한 > 5리디렉션 명령으로 처리됩니다.

그래서

echo 2 * 3 > 5 is a valid inequality 

다음과 같이 구문 분석됩니다.

echo 2 * 3 is a valid inequality > 5

그러면 내용이 "2"인 "5"라는 파일이 생성됩니다.현재 파일 목록3은 유효한 부등식이다.”

이런 일이 발생하지 않도록 하려면 따옴표를 사용해야 합니다.

echo '2 * 3 > 5 is a valid inequality'

이렇게 하면 '...'쉘이 특수 문자를 해석하고 사용자가 입력한 문자열을 표시하는 것을 방지할 수 있습니다.

관련 정보