当前位置: 首页 > 面试题库 >

通过Bash脚本转义MYSQL命令行

朱睿
2023-03-14
问题内容

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

我将由您决定是否足够激进。



 类似资料:
  • 我已经写了一个脚本,在我的Ubuntu发行版上作为自动点击器工作。点击工作,但'sleep‘命令似乎不能正常工作。如果我取出click并从terminal运行它,那么sleeps将按预期工作。但是当我将它绑定到一个快捷方式并且在玩游戏的时候运行它的时候,它并没有Hibernate,看起来它只是一直点击。 最重要的Hibernate是break_intervalHibernate,因为它将高压灭菌器

  • 问题内容: 我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件, 为了实现这一点,我正在插入文件 在文件末尾,我放入 问题是当它调用第一个命令时,它将终止脚本, 提前感谢我如何做这项工作的任何建议 问题答案: 问题在于,直到退出产生的外壳程序才返回,这时您的Python脚本将恢复。 执行所需操作的最简单方法是使用Python脚本作为参数来调用自身。代替 您将

  • 问题内容: 我正在尝试使用命令记录bash会话。 该命令是从bash脚本开始执行的,但是一旦执行,bash脚本就会终止。 我尝试使用各种组合来始终以相同的结果调用命令(调用该命令后立即终止bash脚本)。我得到的输出如下: 我也尝试过最后用a来调用命令,但是再次失败了。 谁能告诉我如何从bash脚本调用命令? 谢谢 问题答案: 您的Shell脚本没有终止。它仍在运行。您会收到提示,因为正在生成新的

  • 我在远程服务器上设置了一个自动日志检查的设置。我创建了类似这样的方法,使用exec命令跟踪日志… 如何运行mysql命令将结果返回到eclipse终端?

  • 问题内容: 我遇到一个我不明白的问题,我编写了一个简单的Groovy脚本,当从命令行调用该脚本时,它可以按预期工作 所以当我做 这将打印出来 所以这是预期的。 然后我得到的是一个Groovy脚本,我称之为jenkins管道构建的一部分 作为我的詹金斯建筑的一部分,我有 我在这里误会了什么吗?但是似乎curl请求永远都没有回来 谢谢 问题答案: groovy String.execute()返回可能

  • 我正试图用脚本方法安装一个模块,但我不知道如何用节点脚本语言安装,或者如果你有任何想法请与我分享。