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는 다음과 같은 이름의 명령어를 실행하려고 합니다.STR
2개의 인수(문자열)를 사용하여=
그리고.foo
)
글을 쓸 때:
STR =foo
bash는 다음과 같은 이름의 명령어를 실행하려고 합니다.STR
1개의 인수(문자열)를 사용합니다.=foo
)
글을 쓸 때:
STR= foo
bash는 명령어를 실행하려고 합니다.foo
STR을 해당 환경에서 빈 문자열로 설정합니다.
이것이 명확화에 도움이 될지, 단순한 난독화인지는 모르겠지만, 주의해 주십시오.
- 첫 번째 명령어는 정확히 다음 명령어와 동일합니다.
STR "=" "foo"
, - 두 번째는 와 같다
STR "=foo"
, - 그리고 마지막은 에 해당합니다.
STR="" foo
.
sh 언어 사양 섹션 2.9.1의 관련 섹션에는 다음과 같이 기술되어 있습니다.
"단순 명령어"는 임의의 순서로 선택적 변수 할당 및 리디렉션의 시퀀스로, 단어와 리디렉션이 선택적으로 이어지며 제어 오퍼레이터에 의해 종료됩니다.
그런 맥락에서word
bash가 실행하는 명령어입니다.다음을 포함하는 모든 문자열=
(스트링의 선두 이외의 임의의 위치) 리다이렉션이 아닌 스트링의 앞부분이=
는 유효한 변수 이름이고, 리다이렉션 또는 변수 할당이 아닌 문자열은 명령어입니다.인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
'programing' 카테고리의 다른 글
C# EPplus OpenXML의 행 수 (0) | 2023.04.17 |
---|---|
Excel 워크북의 모든 워크시트를 data.frames와 함께 R 목록으로 읽습니다. (0) | 2023.04.17 |
Generic.xaml의 특별한 점은 무엇입니까? (0) | 2023.04.17 |
SQL Server에서의 이스케이프 문자 (0) | 2023.04.17 |
.gitignore 파일 작성 방법 (0) | 2023.04.17 |