!
二重引用符で囲まれた文字列にシンボルを入れるときに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!