BASH script if sætning fejler MySQL oprettelse af bruger
Jeg har lavet følgende script som virker fint:Fil start ua.sh
#!/bin/bash
echo "Opretter bruger i MySQL database og opretter database"
echo "Brugernavn skal angives som argument. Eksempel: sh ua.sh ftpuser"
USER="$1"
mysql -u root <<MYSQL_SCRIPT
CREATE DATABASE $USER;
CREATE USER '$USER'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON $USER.* TO '$USER'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT
echo "MySQL USER and database created."
Men hvis jeg tilføjer en if-sætning for at kontrollere om, der er indtastet brugernavn, så fejler det:
Fil start ua.sh
#!/bin/bash
echo "Opretter bruger i MySQL database og opretter database"
echo "Brugernavn skal angives som argument. Eksempel: sh ua.sh ftpuser"
if "$1" = "" then
echo "Der er ikke angivet brugernavn"
else
USER="$1"
mysql -u root <<MYSQL_SCRIPT
CREATE DATABASE $USER;
CREATE USER '$USER'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON $USER.* TO '$USER'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT
echo "MySQL USER and database created."
fi
Fil end ua.sh
Jeg har kigget på følgende side:
https://askubuntu.com/questions/1414191/syntax-error-unexpected-expecting-then
Der står at hvis man bruger carriage return efter then, så opstår der fejl. Men hvordan undgår man så carriage return efter then.