通过Bash脚本转义MYSQL命令行
PHP必须mysql_real_escape_string()
正确地转义任何可能引起问题的字符。为BASH模仿此功能的最佳方法是什么?
无论如何,有使用bash做准备好的mysql语句吗?这似乎是最好的方法。
我的大多数变量都不会(不应)具有特殊字符,但是我为用户提供了完全自由的密码密码。它可能包含’和’之类的字符。
我可能正在执行多个SQL语句,所以我想创建一个包含参数并随后运行该语句的脚本。这是我到目前为止的内容:
doSQL.sh:
#!/bin/shSQLUSER="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=$1doSQL "INSERT INTO active_records (password) VALUES ('$PASSWORD')"
显然,如果密码中包含单引号,则此操作将失败。
回答:
在Bash中,printf
可以为您进行转义:
$ a=''\''"\;:#[]{}()|&^$@!?, .<>abc123'$ printf -v var "%q" "$a"
$ echo "$var"
\'\"\\\;:#\[\]\{\}\(\)\|\&\^\$@\!\?\,\ .\<\>abc123
我将由您决定是否足够激进。
以上是 通过Bash脚本转义MYSQL命令行 的全部内容, 来源链接: utcz.com/qa/404169.html