bash의 큰 따옴표 사이에 "!"기호를 쓰는 방법은 무엇입니까? [복제]


0

이 질문에는 이미 답변이 있습니다.

나는 어떻게 쓰는지 알아낼 수 없다. ! 기호를 큰 따옴표 문자열에 넣을 때 bash 스크립트에 추가하십시오.

예 :

var="hello! my name is $name! bye!"

다음 명령을 입력하면 뭔가 이상한 일이 생깁니다.

$ age=20
$ name='boda'
$ var="hello! my name is $name! bye!"

내가 마지막 명령에서 Enter 키를 누르면 명령은 마지막 명령없이 스스로 반복됩니다 (유형 자체). !:

var="hello! my name is $name! bye"

다시 Enter 키를 누르면 :

$ var="hello! my name is $name bye"

Enter를 다시 누르면 아무것도 사라집니다.

$ 

내가 이것을 시도하면 :

$ echo "hello\! my name is $name\! bye\!"

그런 다음 출력 : hello\! my name is boda\! bye\!

작은 따옴표를 사용하면 내 이름이 확장되지 않습니다.

$ echo 'hello! my name is $name! bye!'

출력은 다음과 같습니다. hello! my name is $name! bye!

나는이 방법으로 일하고있다 :

$ echo "hello"'!'" my name is $name"'!'" bye"'!'

하지만 그것은 하나의 큰 난장판입니다. "' 이해 / 편집 / 유지 / 업데이트가 불가능합니다.

누구든지 도와 줄 수 있습니까?


@Hastur 아니! $name 확장되지 않습니다!
bodacydo

문제를 재현 할 수 없다니 유감입니다. 이제 저는 컴퓨터를 사용하고 있고 처음 세 단계를 거쳐 작성하면 echo $var 나에게 대답 해. hello! my name is boda! bye!. 정말로 쓰지 않았 니? var="hello! my name is $name! bye" !! ?
Hastur

나는보고있다. @Hastur 명령을 실행 한 후 새로운 터미널 창에서 (그리고 Google 폴더는 내가 현재 사용하고있는 폴더가 아니지만 해야 할 것 터미널 창간에 명령 기록 동기화.)
Arjan

그것은 쉘 확장과 관련이있는 것 같습니다 ... @bodacydo 1. 3 줄 + echo $ var를 작은 스크립트에 작성하고 실행하십시오. 2. 새로운 쉘 쓰기 echo hi 들어가고 난 후에 !! 들어가다. 실행 전에 확장되는지 확인하십시오. 아마도 set +o histexpand 도울 수있다.
Hastur

1
복제: unix.stackexchange.com/q/246170/4667 stackoverflow.com/q/33980965/7552 - 여러 사이트에 동일한 질문을 게시하지 마십시오.
glenn jackman

답변:


0

다음과 같이하면 코드를 읽기가 더 쉬울 것입니다.

:~$ name='boda'
:~$ var="hello! my name is $name! bye!" && echo $var
hello! my name is boda! bye!
  • && - 두 번째 명령 echo $var 첫 번째 명령이 실행될 때만 실행됩니다. var="hello! my name is $name! bye!" 성공합니다.

  • :~$ -이 예에서는 bash 프롬프트를 표시하기 때.에 입력되지 않습니다.

  • ! - 너 탈출 할 필요는 없어. ! 위의 명령에서 큰 따옴표 문자 쌍 안에 있기 때문에.


왜 이런 일이 멈출 지 모르겠다. 배쉬 역사 확장 . 나를 위해, 위의 붙여 넣기 날 가져옵니다. 터미널 창 사이에서 명령 기록을 공유하므로 새로운 Bash 인스턴스도 일부 기록을 찾을 수 있습니다. 오직 사용 set +H 복제물에서 제안 된대로이를 중지합니다.
Arjan

그의 질문에는 linux 그래서 내 대답의 예제는 우분투 14.04 (gnome-terminal)의 리눅스에서 실행되었다. 나는 ~를 봤다 MacOS 디렉토리에있는 스크린 샷을 볼 수 있지만 Mac 컴퓨터에서 스크린 샷을 가져온 것인지 또는 다른 컴퓨터에서 동일한 명령을 실행하는 것과는 다른 결과를 얻는 것과 관련이 있는지는 잘 모릅니다.
karel

따옴표를 포함하여 입력하면됩니다. "/some/dummy/command"Enter 키를 누릅니다 ( "No such file or directory"가 표시됨). 위 단계를 반복하십시오.
Arjan

또한 입력하는 것만으로 !" Enter를 치면 그 명령을 다시받을 수 있습니다. 역사 확대.
Arjan

1
내가 언급 한 위의 단계를 반복했고 나는 나의 대답에서와 같은 결과물을 다시 얻었다. 나는 우분투 14.04에서 그놈 터미널에 bash를 사용하고있다. 내 그놈 터미널은 그놈 터미널 창 크기 및 색 구성표의 설정을 변경하는 것을 제외하고는 모든 기본 설정을 갖습니다.
karel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.