Help answer threads with 0 replies.
Go Back > Forums > Linux Forums > Linux - Distributions > Ubuntu
User Name
Ubuntu This forum is for the discussion of Ubuntu Linux.


  Search this Thread
Old 03-30-2013, 09:01 PM   #1
LQ Newbie
Registered: Mar 2013
Posts: 18

Rep: Reputation: Disabled
Unhappy Lost with single and double quotes with bash!

Hello all,

I'm trying to automatize the installation of weighttp, a simple and light web server benchmark tool that is using libev.

I'm using Ubuntu Server 12.04.4 LTS without a GUI.

I wrote a little script ( to do so, but the last part doesn't work.

# Download and Install both libev and weighttp.
cd Downloads
tar -xzf libev-4.15.tar.gz
apt-get -y build-dep libev
apt-get -y install libev-dev
cd libev-4.15
sudo make install
cd ..
tar -xzf weighttp-master.tar.gz
cd weighttp-master
gcc -g2 -O2 -DVERSION='"123"' src/*.c -o weighttp -lev -lpthread <- This is where I've a problem !
sudo cp ./weighttp /usr/local/bin
cd ../..
As a matter of fact, the compilation of weighttp doesn't work since its command line obvioulsy stops when the first single or double quote is intrepreted.

However, I've read a number of documents with regard to bash and its quotes, but no one gave me a way to make what I expect to do.

I've try a number of combinations using the character \ before the single and/or the double quotes but I didn't find any one working !

Note: If I use all these commands, one after one in a terminal session, it works !

However, I'ld love to make the script working too.

Any help will be trully appreciated because I'm a real dumb newbee with bash.

Old 03-31-2013, 12:07 PM   #2
David the H.
Bash Guru
Registered: Jun 2004
Location: Osaka, Japan
Distribution: Debian + kde 4 / 5
Posts: 6,837

Rep: Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981Reputation: 1981
One secret is to stop thinking of quotes as enclosures, and more like toggle switches. They turn shell interpretation of characters on and off.* The only difference between single and double quotes is that double quotes continue to allow interpretation of a few characters, specifically "$,`,\", which allows parameter expansion and backslash escaping to continue happen. See the QUOTING section of the bash manpage for more details on how various characters are treated.

Another thing to understand is that pretty much everything the shell does, including quoting, only has one final purpose -- to create a list of arguments (tokens) for the command being run. Syntactical quotes are actually among the first things processed, and are removed from the line. Only if a quote mark is escaped by another quote or backslash will it become part of the argument itself. But the vast majority of commands do not accept literal quotes anyway.

As for this:

gcc -g2 -O2 -DVERSION='"123"' ...
The first single quote toggles interpretation off, so everything up to the next single quote, including the two double-quotes, are treated as literal characters. The single quotes themselves are removed from the line. So after processing by the shell, gcc gets launched with the literal string:

...including the quotes. Now, does gcc need it to look like this, or not? I really don't know, as my experience with it is limited. But I imagine that it doesn't, so in this case you probably don't need any quote marks at all.

*Note that there are certain situations where nested containers create separate interpretation contexts. i.e.:

echo "A nested command: $( cat "filename with spaces.txt" )."
echo "A parameter substitution (left hand side): ${var/'string$with`special|characters*'/replacement string}"
The internal sets of quotes are treated separately from the outer ones, but they still act as toggles inside their respective parsing environments.
1 members found this post helpful.
Old 04-01-2013, 12:38 AM   #3
LQ Newbie
Registered: Mar 2013
Posts: 18

Original Poster
Rep: Reputation: Disabled
Thank you for all these precisions that solved my problem.

All the best.


bash scripting, ubuntu 12.04

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
translate value from single quotes to double quotes venkateshrupineni Linux - Newbie 2 06-14-2012 04:03 PM
[SOLVED] Using a long Bash command including single quotes and pipes in a Bash script antcore Linux - General 9 07-22-2009 12:10 PM
gvim - double quote char always replaced with two single quotes in special modes JazzItSelf Linux - Software 4 09-16-2008 12:26 PM
Using single quotes vs double quotes in PHP strings vharishankar Programming 6 07-11-2005 12:41 PM
In BASH shell, what is the difference in usage between single and double quotes? davidas Linux - Newbie 2 04-05-2004 04:00 AM > Forums > Linux Forums > Linux - Distributions > Ubuntu

All times are GMT -5. The time now is 12:23 AM.

Main Menu
Write for LQ is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration