コマンドラインで$文字エスケープを無効にする方法

コマンドラインで$文字エスケープを無効にする方法

私はこれについてたくさんのスレッドを読んでいましたが、それらのどれもこの問題に対処しませんでした。

$エスケープされたコンテンツが含まれているため、MySQLの動作が中断されるコマンドラインでMySQL式を実行する必要があります。

mysql -u root -p -e "some statement that change a pa$$word"

確認してもらいました。printf

printf "%q\n" 'pa$$word'
pa\$\$word

したがって、脱出する必要はありません。$それ以外の場合、MySQLクエリに無効なパスワードが入力されます。

ベストアンサー1

あなたはいくつかのダイナミクスを誤解しました。

構文を一重引用符で囲むと'、つまり拡張はなく、sをエスケープする必要はありません$。拡張とは、たとえば特殊文字が存在する$場合にエスケープされていない場合、特殊シェルプロセスがトリガーされることを意味します。したがって、単一引用符を使用して拡張を抑制する場合は、エスケープする必要はありません。したがって、以下を使用してください。

mysql -u root -p -e 'some statement that change a pa$$word'

に関しては、printfあなたがしたことは検査ではありませんでした。呼び出すと、s%qにバックスラッシュが追加されます$

何かがうまくいかない場合は、$$シェルのPID(プロセスID)が変更されたためです。これは、シェルが通常の状況で特殊文字の組み合わせで実行する操作です。エスケープされていない、または一重引用符内に配置されていない場合。

おすすめ記事