通过Bash脚本转义MYSQL命令行

PHP必须mysql_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脚本转义MYSQL命令行 的全部内容, 来源链接: utcz.com/qa/404169.html

回到顶部