Jump to content
webkenny

Bash script newlines and mysql command oddity

Recommended Posts

Hi all!

 

So I'm finally getting around to doing my very own workflow programming and I've run into some weirdness creating a Workflow that Runs a Bash Script in Alfred v2. I've tested this bash script on the command line and it works a treat. In fact, most of the workflow works in Alfred but a couple of things are funky:

 

  • When using \n inside my echo commands it literally prints \n instead of using a new line. I'd like to format my virtual hosts files as I have them now. It's even more critical for /etc/hosts where that needs to on a new line.
  • When running the mysql logic - It doesn't create the database. It will, however, start MySQL which is something. Note I have tried to both make the commands sequential and used the && distinction. Neither works.

The long and short of this is that basically I am creating a new local site on my stack. I create a directory, a virtual host entry, an /etc/hosts entry, and a MySQL database. Simple enough.

 

I am sure this is due to my being very new to Alfred workflows. Probably something silly. Any help you can offer would be appreciated greatly.

 

Interpreter is /bin/bash - All of the escapes are checked in the workflow window (Backslashes, Brackets, etc.) and the whole script looks like this...
 
site="{query}"

# Create a new directory
mkdir ~/Sites/$site

# Create a new entry in the Apache virtual hosts file.
echo "\n<VirtualHost *:80>" >> ~/Sites/httpd-vhosts.conf
echo "  ServerName $site.localhost" >> ~/Sites/httpd-vhosts.conf
echo "  DocumentRoot \"/Users/ksilanskas/Sites/$site\"" >> ~/Sites/httpd-vhosts.conf
echo "  ErrorLog \"/Users/ksilanskas/Sites/Logs/$site-errors.log\"" >> ~/Sites/httpd-vhosts.conf
echo "</VirtualHost>" >> ~/Sites/httpd-vhosts.conf

# Ensure MySQL is running and then create the database.
mysql.server start >> /dev/null && echo "CREATE DATABASE $site" | mysql -u root -proot >> /dev/null

# Add an entry to the /etc/hosts file and restart Apache
osascript -e "do shell script \"sudo echo '127.0.0.1 $site.localhost' >> /etc/hosts && sudo apachectl restart >/dev/null\" with administrator privileges"

Thanks again! 

 

P.S. To prove I did a little searching... I did find this but it didn't look like a complete topic... http://www.alfredforum.com/topic/879-create-mysql-database-from-script-action/?hl=mysql - I'd prefer to just stick with using command line on this one if possible.

 

Share this post


Link to post

 

Hi all!

 

So I'm finally getting around to doing my very own workflow programming and I've run into some weirdness creating a Workflow that Runs a Bash Script in Alfred v2. I've tested this bash script on the command line and it works a treat. In fact, most of the workflow works in Alfred but a couple of things are funky:

 

  • When using \n inside my echo commands it literally prints \n instead of using a new line. I'd like to format my virtual hosts files as I have them now. It's even more critical for /etc/hosts where that needs to on a new line.
  • When running the mysql logic - It doesn't create the database. It will, however, start MySQL which is something. Note I have tried to both make the commands sequential and used the && distinction. Neither works.

The long and short of this is that basically I am creating a new local site on my stack. I create a directory, a virtual host entry, an /etc/hosts entry, and a MySQL database. Simple enough.

 

I am sure this is due to my being very new to Alfred workflows. Probably something silly. Any help you can offer would be appreciated greatly.

 

Interpreter is /bin/bash - All of the escapes are checked in the workflow window (Backslashes, Brackets, etc.) and the whole script looks like this...
 
site="{query}"

# Create a new directory
mkdir ~/Sites/$site

# Create a new entry in the Apache virtual hosts file.
echo "\n<VirtualHost *:80>" >> ~/Sites/httpd-vhosts.conf
echo "  ServerName $site.localhost" >> ~/Sites/httpd-vhosts.conf
echo "  DocumentRoot \"/Users/ksilanskas/Sites/$site\"" >> ~/Sites/httpd-vhosts.conf
echo "  ErrorLog \"/Users/ksilanskas/Sites/Logs/$site-errors.log\"" >> ~/Sites/httpd-vhosts.conf
echo "</VirtualHost>" >> ~/Sites/httpd-vhosts.conf

# Ensure MySQL is running and then create the database.
mysql.server start >> /dev/null && echo "CREATE DATABASE $site" | mysql -u root -proot >> /dev/null

# Add an entry to the /etc/hosts file and restart Apache
osascript -e "do shell script \"sudo echo '127.0.0.1 $site.localhost' >> /etc/hosts && sudo apachectl restart >/dev/null\" with administrator privileges"

Thanks again! 

 

P.S. To prove I did a little searching... I did find this but it didn't look like a complete topic... http://www.alfredforum.com/topic/879-create-mysql-database-from-script-action/?hl=mysql - I'd prefer to just stick with using command line on this one if possible.

 

 

Haven't messed with the mysql part yet but the newlines.... try replacing echo with printf and it should work but you'll need a \n at the end of each one to have all of those commands on a new line, otherwise, it prints them all on one line

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...