변수에 값을 할당하는 동안“STR : Command not found”


9

“test.sh”라는 쉘 스크립트에 다음 줄을 입력했습니다.

#!/bin/bash
echo Hello World
STR=”Hello Again
echo $STR

chmod를 실행 파일에 추가 한 후로 스크립트를 실행했습니다 ./test.sh. 그러나 나는 메시지를 받는다

./test.sh: line 3  STR: Command not found

내가 무엇을 잘못하고 있지?


1
terdon의 답변으로 질문이 해결 되었습니까? 그렇지 않은 경우 실수로 변수 할당 주위에 공백이있을 수 있습니다.
Arronical

@Voker는 내 제안에 기초한 문체 주석 입니다. 코드 블록 대신 오류 메시지에 Blockquote를 사용하는 것이 가장 좋습니다. 결국 이것은 코드가 아니라 Bash 인터프리터가 반환하는 일부 텍스트입니다.
fedorqui

@fedorqui 왜? 견적 블록 서식을 보존하지 않는, 그들은 특수 문자를 해석 (예를 들면 *, _, #) 가격 인하 등, 스크린 리더 소프트웨어에 의해 다르게 렌더링됩니다. 컴퓨터가주고받는 것은 코드 블록 안에 있어야한다고 생각합니다. 정확한 형식이 언제 적절한 지 알 수 없습니다. 특히 유니 코드가 등장하는 것과 같은 것들을 다룰 때.
terdon

@terdon은 실제로 사례에 따라 다르며 단어 줄 바꿈을 허용하고 줄 바꿈을 유지하는 로그 / 경고 / 오류 메시지의 형식 추가 요청도 있습니다 . 나에게,이 경우와 같은 줄이면 코드와 오류가 무엇인지 이해하기 쉽기 때문에 따옴표 블록을 선호합니다.
fedorqui

@fedorqui 나는 메타로 가져 가야한다고 생각하지만 컴퓨터에서 읽거나 생성하는 메시지를 게시 할 때마다 항상 고정 너비 글꼴과 정확한 형식 재생을 선호합니다.
terdon

답변:


20

해당 스크립트를 작성하기 위해 무엇을 사용하고 있습니까? 질문에 인용 부호가 잘못되었습니다. 그것들은 일반적인 큰 따옴표 ( ")가 아니라 . 일반적인 인용문은 다음과 같습니다.

$ uniprops '"' | head -1
U+0022 "› \N{QUOTATION MARK}

당신이있는 동안 :

$ uniprops '”' | head -1
U+201D ‹”› \N{RIGHT DOUBLE QUOTATION MARK}

따라서 정규 따옴표를 사용하면 괜찮을 것입니다.

#!/bin/bash
echo Hello World
STR="Hello Again"
echo "$STR" ## Get into the habit of ALWAYS quoting your variables as well

답장 Terdon에 감사드립니다. 파일의 큰 따옴표가 정확합니다. 게시물은 이메일에서 온 것입니다.
Jay Silver

1
uniprops좋아 보인다. 나는 그 페이지를 찾았다 (우리 자신의 tchrist인가?). 소스에서 다운로드해야합니까 아니면 패키지 관리자에서 사용할 수 있습니까? E: Unable to locate package uniprops
TRiG

1
나는 Perl을 많이 사용하지 않습니다 (거의 전혀 없음). 유니 코드에 대한 최소한의 것 이상을 알고 싶습니다 .
TRiG

1
우분투에서 @TRiG 글쎄, 그것은 간단 sudo apt-get install cpanminus; sudo cpanm Unicode::Tussle하고 uniprops명령이 있습니다. 물론, tchrist는 그 빌어 먹을 글을 썼으므로 당신은 또한 그에게 채팅으로 물어볼 수 있습니다 :)
terdon

1
나는 이런 종류의 말도 안되는 일에 항상 유감스럽게 생각합니다. 내 고용주의 특정 위키 시스템은 하이픈-마이너스 -U + 002D를 하이픈 U + 2010 ( 또는 이와 유사한 ) 으로 변환하는 불쾌한 습관이있는 것 같습니다 . 그런 다음 uname ‐a작동을 멈추는 것과 같은 것들 :-/. 전자 메일 클라이언트는 종종 유사한 형식의 습관을 가지고 있습니다. 특히 HTML 형식을 사용할 때 일반 텍스트 전자 메일을 선호하는 또 다른 이유입니다.
디지털 외상
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.