찾다
php教程PHP开发쉘 프로그래밍: Bash Space Things

먼저 Bash에서 공백을 사용해야 하는 경우와 사용하지 않는 경우를 이해하세요.

1. 등호 할당에는 양쪽에 공백이 있으면 안 됩니다.

2. 명령과 옵션 사이에는 공백이 필요합니다.

3. 선택사항

자주 발생하는 문제 살펴보기

1. 할당할 때 등호 양쪽에 공백이 있거나 왼쪽에만 공백이 있습니다
test@pythontab. com ~ $ var1 = 테스트
bash: var1: 명령을 찾을 수 없음
test@pythontab.com ~ $ echo ${var1:?error}
bash: var1: 오류
test@pythontab.com ~ $ echo ${var1?error}
bash: var1: 오류
test@pythontab.com ~ $ var2 =test
bash: var2: 명령을 찾을 수 없음
test@pythontab.com ~ $ echo ${var2:?error}
bash: var2: error
test@pythontab.com ~ $ echo ${var2?error}
bash: var2: error

여기서 사용했습니다 bash 변수 확장, ${var1:?error} var1이 설정되지 않거나 null(정의되지 않거나 비어 있음)인 경우 지정된 오류가 보고됩니다. ${var1?error}var1이 설정되지 않은 경우 지정된 오류가 보고됩니다. 실행 결과로 볼 때 등호 왼쪽에 공백이 있으면 변수 이름이 명령으로 실행되어 결과는 명령을 찾을 수 없으며 변수에 값이 할당되지 않았습니다

2. 값을 지정할 때 등호 왼쪽에는 공백이 없고 오른쪽에는 공백이 있습니다. (이 상황은 조금 특별합니다. 두 가지 상황이 있습니다.)
test@pythontab .com ~ $ var= test
test@pythontab.com ~ $ var= nocmd
bash: nocmd: command notfound

등호 오른쪽에도 공백이 있습니다. 첫 번째 명령은 오류를 보고하지 않지만 두 번째 명령은 오류를 보고합니다.

쉘에서 명령을 실행하는 방법이 있기 때문입니다: var=string command

명령 명령은 변수 var의 값을 가져옵니다( var 변수는 명령이 실행된 후 유지됩니다. bash4에서는 유지되지 않지만 대시에서 찾았을 때 유지되었습니다. 테스트는 명령이고 nocmd는 그렇지 않기 때문에 보고했습니다. 명령을 찾을 수 없습니다.
test@ pythontab.com ~ $ var=newtest eval echo $var
newtest
test@pythontab.com ~ $ echo $var

참고: 여기서는 eval을 사용했습니다. 첫 번째 오류를 방지하기 위해 구문 분석 시 $var가 빈 문자열로 대체됩니다. 그렇지 않으면 다음과 같은 상황이 발생합니다(다음은 잘못된 테스트 방법입니다. echo가 실행되기 전에 $var가 빈 문자열로 대체되었습니다)

코드는 다음과 같습니다.
test@pythontab.com ~ $ var=newtest echo $var
test@pythontab.com ~ $ echo $var

이쯤 되면 다들 이해하셨으리라 믿습니다. 등호의 경우 값을 지정할 때 왼쪽과 오른쪽에 공백이 있으면 안 됩니다. 오른쪽에 공백이 있으면 반드시 오류가 발생하는 것은 아니지만 원하는 결과는 아닙니다.

3. 명령어와 옵션 사이에 공백이 있어야 합니다

다들 이해하시는 것 같은데 왜 아직도 장황할까요? 얘기가 나와서 말인데, 매우 특별한 명령을 언급해야 합니다: [ 명령(맞게 읽으셨군요. [ )입니다. 이것은 테스트 명령입니다(물론 bash에서 이것은 내장 명령이지만 영향을 미치지 않습니다).

우리의 이해). 아마 여러분은 [명령이 친숙해 보인다고 생각할 것입니다. 예, 여러분도 본 적이 있을 것입니다. 다음 예제를 살펴보세요
test@pythontab.com ~ $ if [ "abc" = "abc" ]; '그들은 동일합니다'; fi
그들은 동일합니다
test@pythontab.com ~ $ type -a [
[는 쉘 내장입니다
[는 /usr/bin/[

기억하시나요? [명령어는 if 판단에 자주 사용됩니다. 물론 어떤 사람들은
test@pythontab.com ~ $ [ "abc" = "cba" ] || echo 'they are not the same'
그들은 동일하지 않습니다
test@pythontab.com ~ $ type -a [
[ 내장 쉘입니다
[ is /usr/bin/[

[ 이 명령은 호출됩니다. 테스트 명령, 둘 다 거의 동일합니다. 정확히 동일하지 않은 이유는 무엇입니까? 이것을 살펴보겠습니다
test@pythontab.com ~ $ [ "abc" = "cba"
bash: [: 누락 `]'
test@pythontab.com ~ $ [ "abc" = "cba " ]
test@pythontab.com ~ $ test "abc" = "cba" ]
bash: 테스트: 인수가 너무 많습니다
test@pythontab.com ~ $ test "abc" = "cba "

분명히 말씀드리자면 [명령어를 사용할 때는 tail을 주어야 합니다.], test 명령을 사용할 때는 tail을 추가할 수 없습니다. Tail]은 [마지막 매개변수,

명령의 끝을 나타내는 필수 매개변수입니다. 모두가 이해할 수 있도록 먼저 다음과 같이 말씀드리겠습니다. [이것은 쉘에 있는 명령이고 주위에 공백이 있어야 합니다! ]는 [의 마지막 필수 매개변수이며 양쪽에 공백이 필요합니다(ps와 같은 일부 명령의 매개변수는 함께 연결할 수 있지만 [ 명령은 연결할 수 없으므로 매개변수 사이에 공백이 있어야 합니다). [일반적인 실수

를 살펴보겠습니다. a. if와 [
test@pythontab.com ~ $ if[ "$HOME" = "/home/igi"];then echo ' 사이에 공백이 없습니다. 동등'; fi
bash: 예상치 못한 토큰 `then'
test@pythontab.com 근처에 구문 오류가 있습니다. ~ $ if[ "$HOME" = "/home/igi" ];then echo 'equal'; 🎜>bash: 예상치 못한 토큰 `then'
test@pythontab.com 근처에 구문 오류가 있습니다. ~ $ if["$HOME" = "/home/igi"];then echo 'equal'; bash: 구문 예상치 못한 토큰 `then'
test@pythontab.com ~ $ if["$HOME" = "/home/igi" ];then echo 'equal'; bash: 예상치 못한 토큰 근처에서 구문 오류 ` 그럼'

분명히 구문 분석 오류입니다. if[ bash의 경우 도대체 무엇인지 모르겠습니다

b. [와 다음 매개변수
test@pythontab.com ~ $ 사이에 공백이 부족합니다. if [" $HOME" = "/home/igi" ];then echo 'equal'; fi
bash: [/home/igi: 해당 파일이나 디렉터리가 없습니다
test@pythontab.com ~ $ if [ "$HOME " = "/home/igi"];then echo 'equal'; fi
bash: [/home/igi: 해당 파일이나 디렉터리가 없습니다

["$HOME" bash의 경우, 그리고 도대체 무슨 일이 일어나고 있는지 모르겠습니다

c. [ ]
test@pythontab.com ~ $ if [ "abc"="abc" 사이의 매개변수 사이에 공백이 부족합니다. ]; then echo 'equal' ; fi
equal
test@pythontab.com ~ $ if [ "abc"="cba" ] then echo 'equal'; >첫 번째 명령어는 맞는 것 같네요(사실 그냥 우연일 뿐입니다), 두 번째 명령어를 보면 "abc"와 "cba"는 분명히 다르지만 같은 것으로 판단됩니다. 이는 매개변수 사이의 공백이 부족하고, [명령어는 내부 값을 단순한 값으로 간주하기 때문입니다. 다음 명령을 살펴보면 안심할 수 있습니다
test@pythontab.com ~ $ if [ 0 ] then echo 'equal'; fi
equal
test@pythontab.com ~ $ if [ "1 " ]; echo 'equal'; fi
equal
test@pythontab.com ~ $ if [ "" ]; then echo 'equal'; test@pythontab.com ~ $ if [ ] ; then echo 'equal'; fi

[ ]에 값이 하나만 있는 경우(공백이 부족하여 함께 연결된 것도 포함) 빈 문자열이 아닌 경우 true입니다. . 따라서 [ ] 사이의 매개변수도 양쪽에 공백이 있어야 하며, 겹쳐서 사용할 수 없습니다

d. 매개변수와 꼬리 사이에 공백이 부족합니다.]

장황하지 않습니다. , tail] [명령어의 매개변수이기도 합니다. 위에서 언급했듯이

매개변수 사이에는 공백이 있어야 합니다. . 물론입니다. 행운을 빕니다.
test@pythontab.com ~ $ var=' abc'
test@pythontab.com ~ $ if [$var = "abc" ] ;then echo 'equal'; fi
equal
test@pythontab.com ~ $ if ["$var" = "abc" ];then echo 'equal'; bash: [ abc: 명령 찾을 수 없음

double 따옴표로 묶인 것은 전체를 의미하며, 큰 따옴표가 없는 경우 문자열 전후의 공백이나 탭은 잘립니다. 우연히 마주치거나 의도적으로 문자열 앞뒤에 공백이나 탭을 삭제하려는 경우 불가능하지는 않지만 이를 작성하는 것은 매우 권장되지 않습니다. 코드가 매우 취약해질 수 있습니다.

또는 추가해야 할 공백을 모두 추가했지만 여전히 오류가 발생하는 경우도 큰따옴표가 부족하기 때문일 수 있습니다. 이러한 상황은 매우 일반적입니다. 마지막으로
test@pythontab.com ~ $ var=''
test@pythontab.com ~ $ if [ "$var" = "abc" ];then echo를 살펴보세요. 'equal'; fi
test@pythontab.com ~ $ if [ $var = "abc" ];then echo 'equal';
bash: [: =: 단항 연산자 필요
test@pythontab .com ~ $ dvar='a b c'
test@pythontab.com ~ $ if [ $dvar = "a b c" ];then echo 'equal'; fi
bash: [: 인수가 너무 많습니다
test@ pythontab.com ~ $ if [ "$dvar" = "a b c" ];then echo 'equal'; fi
equal

자세히 설명하겠습니다. 큰따옴표를 생략하지 마세요. 쉽게. 분명합니까? 그래도 이해가 안 되시면

마지막으로 파이프 양쪽의 선택 공백에 대해 헛소리는 하지 않겠습니다. 이에 대해 의심하는 사람을 본 적이 없기 때문입니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)