이렇게 입력하는 방법은 무엇입니까?

이렇게 입력하는 방법은 무엇입니까?

저는 Unix, Linux 및 OS X의 Shell 프로그래밍 제4판을 읽고 있습니다.

P.112에서는 이에 대한 예를 보여줍니다.

$ lines=one'
> 'two
$ echo "$lines"
one
two
$ lines=ones\
> two
$ echo "$lines"
onetwo
$

첫 문장에서 막혔어요.

내가 시도한 것은 이것입니다.

jackson@jackson-VirtualBox:~$ lines=one'>'two
jackson@jackson-VirtualBox:~$ echo "$lines"
one>two
jackson@jackson-VirtualBox:~$ $lines=one'>'two
one>two=one>two: command not found
jackson@jackson-VirtualBox:~$ lines=one \n '>'two
n: command not found
jackson@jackson-VirtualBox:~$ lines=one' \n>'two
jackson@jackson-VirtualBox:~$ echo "$lines"
one \n>two
jackson@jackson-VirtualBox:~$ lines=one'>'two
jackson@jackson-VirtualBox:~$ lines=one'\n>'two
jackson@jackson-VirtualBox:~$ echo "$lines"
one\n>two
jackson@jackson-VirtualBox:~$ lines=one\n>two
jackson@jackson-VirtualBox:~$ echo "$lines"
onen

내 질문은: 입력 방법입니다.

$ lines=one'
> 'two

답변1

이는 다음과 같이 입력됩니다.

lines=one'
'two

즉, 첫 번째 따옴표 다음에 Enter를 누르십시오.

따옴표 안에 있기 때문에 bash는 다음 입력 줄(닫는 따옴표로 시작)을 이전 줄의 일부로 처리합니다. 이것은 >이전 줄에서 계속하기 위해 더 많은 입력을 받아들일 준비가 되었다는 bash의 힌트일 뿐입니다. 이는 입력하라는 의미가 아닙니다.

프롬프트는 $PS2"보조 프롬프트 문자열"이라고도 알려진 변수의 값입니다. 연속/보조 입력 라인에 사용되며 $PS1주 입력 라인에는 사용되지 않습니다. 시스템에서 이들이 어떻게 정의되어 있는지 확인 하십시오 declare -p PS1 PS2. 사람들이 PS1을 사용자 정의하는 것은 일반적이지만 PS2를 사용자 정의하는 경우는 더 드뭅니다(따라서 이것이 기본값일 수 있음 >).

최신 버전의 bash(및 기타 bourne 유사 쉘)를 사용하여 동일한 작업을 수행하는 또 다른 방법은 다음과 같습니다.

lines=$'one\ntwo'

not을 사용하면 $'...'단순히 bash가 문자열의 이스케이프 코드(예: 줄 바꿈)를 '...'해석하도록 지시합니다 .\n

답변2

글쎄요, vars에 줄바꿈을 추가하는 방법에는 여러 가지가 있지만 실제로는 다음과 같은 질문을 하신 것 같습니다.

새로운 프롬프트에서,

  1. 유형lines=one
  2. 작은따옴표를 입력 '하고 다음을 누르세요.enter
  3. 입력을 기다리는 ">" 프롬프트가 나타납니다.
  4. 유형 'two
  5. enter완료하려면 누르세요 .

물론 다음을 사용하여 변수에서 개행 문자를 얻을 수 있습니다.

lines=$'one\ntwo'            # in bash, zsh
lines=$(printf 'one\ntwo')   # in any shell

예를 들어. 더 많은 솔루션이 필요하면 문의하세요.

관련 정보