通过Bash脚本转义MYSQL命令行

前端之家收集整理的这篇文章主要介绍了通过Bash脚本转义MYSQL命令行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHPMysqL_real_escape_string()来正确地转义任何可能导致问题的字符.什么是最好的模拟BASH功能方法

有没有办法使用bash准备好MysqL语句?这似乎是最好的办法.

我的大多数变量不会(不应该)有特殊字符,但是我给用户完全自由的密码.它可以包括诸如“和”的字符.

我可能正在做多个sql语句,所以我想制作一个接受参数的脚本,然后运行该语句.这是我到目前为止

dosql.sh:

#!/bin/sh

sqlUSER="root"
sqlPASS="passwor339c"
sqlHOST="localhost"

sql="$1"
sqlDB="$2"


if [ -z "$sql" ]; then echo "ERROR: sql not defined"; exit 1; fi
if [ -z "$sqlDB" ]; then sqlDB="records"; fi

echo "$sql" | MysqL -u$sqlUSER -p$sqlPASS -h$sqlHOST $sqlDB

和使用所述命令的示例:

example.sh:

PASSWORD=$1
dosql "INSERT INTO active_records (password) VALUES ('$PASSWORD')"

显然,如果密码密码中包含一个单引号,这将会失败.

在Bash中,printf可以为您执行转义:
$a=''\''"\;:#[]{}()|&^$@!?,.<>abc123'
$printf -v var "%q" "$a"
$echo "$var"
\'\"\\\;:#\[\]\{\}\(\)\|\&\^\$@\!\?\,\ .\<\>abc123

我会把它留给你来决定是否足够强大.

猜你在找的Bash相关文章