Bashに次のコマンドを入力した場合:
echo "dog!!"
文字列がわかりませんdog!!
。代わりに別のものを得ました。
"dog!!"
文字列をエコーしようとしましたが、うまくいきませ"dog\!\!
んでした。
感嘆符が2つあるときにコマンドパラメータを使用する方法は?
この感嘆符を特別な機能なしで感嘆符として扱いたいです。
感嘆符の2つが"!!"
最後のコマンドのようです。
答え1
感嘆符を避けるか、次を使用する必要があります。一つ引用符:
echo dog\!\!
echo 'dog!!'
(あなたの仕事がうまくいかない理由を説明していませんが、うまくいくecho "dog\!\!"
必要があり、なぜそれがうまくいかないのかわかりません。少なくとも記録で動作しないでください。Bashでは印刷されますdog\!\!
。)
答え2
Bashで感嘆符を常に通常の文字として扱い、履歴拡張を必要としないようにするには、現在のシェルでこれを無効にできます。
set +o histexpand
または、次のコマンドを追加します。一般的に使用される構成ファイルつまり、.bashrc
すべてのシェルに対して無効にする可能性が高いです。
答え3
存在するLinux Mint 18.1Ubuntu 16.04ベース:
bash --version | head -1
GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)
動作は次のとおりです。
echo dog\!\!
結果:
dog!!
echo 'dog!!'
結果:
dog!!
echo "dog!!"
突然印刷犬以下は最終コマンドです。たとえば、ls
以前にこれを行った場合は、次のように印刷されます。
echo "dogls" dogls
存在するGNU/Linux Debian 9 拡張もう少し新しいバージョンがあります:
bash --version | head -1
GNU bash, version 4.4.11(1)-release (x86_64-pc-linux-gnu)
動作は次のとおりです。
echo dog\!\!
結果:
dog!!
echo 'dog!!'
結果:
dog!!
echo "dog!!"
突然印刷犬以下は最終コマンドです。たとえば、ls
以前にこれを行った場合は、次のように印刷されます。
echo "dogls" dogls
これは私にとって一貫しているようです。
以前のバージョンがインストールされている古いシステムでは、bash
少し異なる動作をする可能性があります。ただし、新しいシステムではこれらの動作を予想できます。