像这样简单的事情似乎会起作用,除非我误解了需求。注意我没有psql,所以不能给你一个确切的解决方案,而是一个指南。
#!/bin/bash
if [ $# -lt 1 ]
then
echo "USAGE: ./update.sh [newvalue]"
echo " [newvalue] represents the new value to insert into the DB."
exit
fi
NEWVAL=$(echo $1 | sed "s/'/\\\'/g")
SQL="UPDATE modules_config_x_roomtypes SET value = '"$NEWVAL"' WHERE modules_config_id = (SELECT id FROM modules_config WHERE module_id = (SELECT id FROM modules WHERE name = 'system') AND name = 'theme');"
echo "$SQL" | mysql --user=user --password=password
这首先确保你有一个说法,然后逃脱它的任何单引号,因此不破的SQL语句,然后回显是在SQL到MySQL。您必须修改用户并按要求传递或从其他文件中获取源代码。
如果您需要插入一张空白的“”将工作作为ARG但这并不处理空。
你可能还需要添加一个检查sql语句退出代码,以确保更新了干净。这只是一个简单的如果是$ ?,但由于这不完全在问题的上下文中,我将其留作练习来完成。
我没有运行psql,所以我不能说确切的参数需要这个工作在那里,但从手册页你可以给选项-c指定一个命令来运行,所以你可能会用这个替换回声给mysql,你也必须处理让脚本连接到数据库,但是这里有很多Q.
您是否检查过'psql'的Postgres文档?在这里:HTTP://www.postgresql.org/docs/current/static/app-psql.html – 2015-02-10 18:06:47