PHP имеет mysql_real_escape_string()
для правильного экранирования любых символов, которые могут вызвать проблемы.Каков наилучший способ имитировать эту функциональность для BASH?
Есть ли способ подготовить операторы mysql, используя bash?Кажется, это лучший способ.
Большинство моих переменных не будут (не должны) иметь специальные символы, однако я даю пользователю полную свободу для их пароля.Он может включать такие символы, как 'и ".
Возможно, я делаю несколько операторов 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')"
Очевидно, что это не получится, еслипароль пароль содержит одну кавычку.