programing

Bash 변수 할당에서 명령을 찾을 수 없음 오류

codeshow 2023. 4. 17. 22:09
반응형

Bash 변수 할당에서 명령을 찾을 수 없음 오류

테스트라는 대본이 있어요.sh:

#!/bin/bash
STR = "Hello World"
echo $STR

내가 달릴 때sh test.sh알겠네.

test.sh: line 2: STR: command not found

내가 뭘 잘못하고 있지?나는 온라인에서 매우 기본적인/초보자 bash 스크립팅 튜토리얼을 보고, 그들은 이렇게 변수를 선언하라고 말합니다.그래서 제가 뭘 잘못하고 있는지 모르겠어요.

Ubuntu Server 9.10을 사용하고 있습니다.네, bash는 다음 위치에 있습니다./bin/bash.

의 주위에 공간을 둘 수 없습니다.=서명하다.

글을 쓸 때:

STR = "foo"

bash는 다음과 같은 이름의 명령어를 실행하려고 합니다.STR2개의 인수(문자열)를 사용하여=그리고.foo)

글을 쓸 때:

STR =foo

bash는 다음과 같은 이름의 명령어를 실행하려고 합니다.STR1개의 인수(문자열)를 사용합니다.=foo)

글을 쓸 때:

STR= foo

bash는 명령어를 실행하려고 합니다.fooSTR을 해당 환경에서 빈 문자열로 설정합니다.

이것이 명확화에 도움이 될지, 단순한 난독화인지는 모르겠지만, 주의해 주십시오.

  1. 첫 번째 명령어는 정확히 다음 명령어와 동일합니다.STR "=" "foo",
  2. 두 번째는 와 같다STR "=foo",
  3. 그리고 마지막은 에 해당합니다.STR="" foo.

sh 언어 사양 섹션 2.9.1의 관련 섹션에는 다음과 같이 기술되어 있습니다.

"단순 명령어"는 임의의 순서로 선택적 변수 할당 및 리디렉션의 시퀀스로, 단어와 리디렉션이 선택적으로 이어지며 제어 오퍼레이터에 의해 종료됩니다.

그런 맥락에서wordbash가 실행하는 명령어입니다.다음을 포함하는 모든 문자열=(스트링의 선두 이외의 임의의 위치) 리다이렉션이 아닌 스트링의 앞부분이=는 유효한 변수 이름이고, 리다이렉션 또는 변수 할당이 아닌 문자열은 명령어입니다.STR = "foo",STR는 변수 할당이 아닙니다.

주변 공간을 드롭합니다.=기호:

#!/bin/bash 
STR="Hello World" 
echo $STR 

인터랙티브 모드에서는 모든 것이 정상으로 표시됩니다.

$ str="Hello World"
$ echo $str
Hello World

분명히 요하네스가 말했듯이, 주변에 공간이 없다.=. 주위에 공간이 있는 경우=그 후 인터랙티브모드에서는 에러가 발생합니다.

명령어 'str'을 찾을 수 없습니다.

나는 이것이 매우 질 높은 답변으로 답했다는 것을 안다.하지만 한마디로 공백은 가질 수 없습니다.

#!/bin/bash
STR = "Hello World"
echo $STR

등호 주변의 공간 때문에 작동하지 않았어만약 당신이 도망친다면...

#!/bin/bash
STR="Hello World"
echo $STR

효과가 있을 것이다

변수를 정의할 때는 추가 공간을 넣지 않아도 됩니다.

예.

name = "Stack Overflow"  
// it is not valid, you will get an error saying- "Command not found"

공백 제거:

name="Stack Overflow" 

잘 될 거야

언급URL : https://stackoverflow.com/questions/2268104/command-not-found-error-in-bash-variable-assignment

반응형