!
큰따옴표로 묶인 문자열에 기호를 넣을 때 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"'!'
하지만 이해/편집/유지/업데이트가 엉망 "
이고 불가능합니다.'
누구든지 도와줄 수 있나요?
답변1
발견한 대로 !
작은따옴표 안의 기록 확장은 트리거되지 않습니다.
작은따옴표로 묶인 기호가 포함된 형식 문자열을 사용할 수 있습니다 printf
. !
예를 들어:
$ name="boda"
$ printf 'hello! my name is %s! bye!\n' "$name"
hello! my name is boda! bye!
또는
$ name="boda"
$ var=$(printf 'hello! my name is %s! bye!\n' "$name")
$ echo "$var"
hello! my name is boda! bye!
답변2
다음을 통해 기록 확장을 비활성화합니다. 대화형 셸에서만 활성화합니다 set +H
.