Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Difference between echo `ls -l` and echo "`ls -l`" ? Post 302912079 by Corona688 on Tuesday 5th of August 2014 03:44:08 PM
Old 08-05-2014
Well, for starters -- it's a pretty silly thing to do, either way. Why do echo "`command`" when you could just do command ?

But the difference is, quotes prevent a string from splitting on whitespace. Spaces, tabs and newlines all count as whitespace. If you do VAR="a b c", and use $VAR without putting it into quotes, the shell will split it in three.

So, quoted, it ends up being:

Code:
echo "one
incredibly
long
string
crammed
into
a
single
argument
containing
actual,
real
line
breaks
printed
literally"

And the unquoted way ends up being:

Code:
echo "one" "incredibly" "long" "string" "where" "each" "whitespace" "separated" "section" "becomes" "its" "own" "individual" "separate" "argument"

This is also one of many reasons why for LINE in `command` is a poor idea. It splits on whitespace, not lines.
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

difference between echo and ""

hi guys wht is the difference between these two command in bash shell scripting $var1=world! $echo hello $var1 $echo "hello $var1" (8 Replies)
Discussion started by: srinivas2828
8 Replies

2. Shell Programming and Scripting

"sed" to check file size & echo " " to destination file

Hi, I've modified the syslogd source to include a thread that will keep track of a timer(or a timer thread). My intention is to check the file size of /var/log/messages in every one minute & if the size is more than 128KB, do a echo " " > /var/log/messages, so that the file size will be set... (7 Replies)
Discussion started by: jockey007
7 Replies

3. Shell Programming and Scripting

Difference between using "echo" builtin and /bin/echo

So in my shell i execute: { while true; do echo string; sleep 1; done } | read line This waits one second and returns. But { while true; do /bin/echo string; sleep 1; done } | read line continues to run, and doesn't stop until i kill it explicitly. I have tried this in bash as well as zsh,... (2 Replies)
Discussion started by: ulidtko
2 Replies

4. Shell Programming and Scripting

ksh script that echo " please insert your name " and store the output to a login.log file.

Hello All Nice to meet you all here in this forum, it's my 1rst time here i'm asking about a little issue that i face i added a ksh script that echo " please insert your name " and store the output to a login.log file. the script is working fine with normal telnet but Xstart is not working... (8 Replies)
Discussion started by: islam.said
8 Replies

5. Shell Programming and Scripting

With that logic this echoes "echo". Question about echo!

echo `echo ` doesn't echoes anything. And it's logic. But echo `echo `echo ` ` does echoes "echo". What's the logic of it? the `echo `echo ` inside of the whole (first) echo, echoes nothing, so the first echo have to echo nothing but echoes "echo" (too much echoing :P):o (2 Replies)
Discussion started by: hakermania
2 Replies

6. HP-UX

echo "selall;info;wait;infolog" | /usr/sbin/cstm problem

Hello, On a HP-UX 10.20 server I've executed something similar to this command: # echo 'selall;info;wait;infolog;view;done' | /usr/sbin/cstm But it returns sometype of "argument list too long" error. I suppose there is a way to fix it by using xargs but I can't figure it out. Any... (7 Replies)
Discussion started by: asanchez
7 Replies

7. Shell Programming and Scripting

"Simple" echo/reading variable question...

Hello, I have a simple(I think) question! Although simple, I have been unable to resolve it, so I hope someone can help! OK, here it is: 1)I have an awk script that prints something, such as: awk '{print $2}' a > x so x might hold the value of say '10' 2)Now, I just want to check to see if... (4 Replies)
Discussion started by: astropi
4 Replies

8. Shell Programming and Scripting

cmd || echo "something" - doesn't exit uppon error

Hi guys, I have a shell script where I have the following: for i in ad0 ad1 do gpart create -s gpt $i || echo "Cannot create GPT partition on "$i". Exiting ..." gpart add -s 128 -t freebsd-boot $i || echo "Cannot add freebsd-boot partition on "$i". Exiting ..." gpart add -s 4G -t... (2 Replies)
Discussion started by: da1
2 Replies

9. AIX

echo $varibla | mail -s "subject" "xxx@xxx.com" not ruuning as expected

Hi Folks, As per the subject, the following command is not working as expected. echo $variable | mail -s "subject" "xxx@xxx.com" Could anyone figure it out whats wrong with this. I am using AIX box. Regards, (2 Replies)
Discussion started by: gjarms
2 Replies

10. Shell Programming and Scripting

tcsh - understanding difference between "echo string" and "echo string > /dev/stdout"

I came across and unexpected behavior with redirections in tcsh. I know, csh is not best for redirections, but I'd like to understand what is happening here. I have following script (called out_to_streams.csh): #!/bin/tcsh -f echo Redirected to STDOUT > /dev/stdout echo Redirected to... (2 Replies)
Discussion started by: marcink
2 Replies
SH(1)							      General Commands Manual							     SH(1)

NAME
sh, ., break, case, cd, continue, eval, exec, exit, export, for, if, read, readonly, set, shift, trap, umask, wait, while - shell SYNOPSIS
sh [-eiknqstvxu] [-c str] [file] OPTIONS
-c Execute the commands in str -e Quit on error -i Interactive mode; ignore QUIT, TERMINATE, INTERRUPT -k Look for name=value everywhere on command line -n Do not execute commands -q Change qflag from sig_ign to sig_del -s Read commands from standard input -t Exit after reading and executing one command -v Echo input lines as they are read -x Trace -u Unset variables EXAMPLES
sh script # Run a shell script DESCRIPTION
Sh is the shell, which forms the user's main interface with the system. On startup, the shell reads /etc/profile and $HOME/.profile, if they exist, and executes any commands they contain. The Minix shell has most of the features of the V7 (Bourne) shell, including redirect- ion of input and output, pipes, magic characters, background processes, and shell scripts. A brief summary follows, but whole books have been written on shell programming alone. Some of the more common notations are: date # Regular command sort <file # Redirect stdin (standard input) sort <file1 >file2 # Redirect stdin and stdout cc file.c 2>error # Redirect stderr a.out >f 2>&1 # Combine standard output and standard error sort <file1 >>file2 #Append output to file2 sort <file1 >file2 & #Background job (ls -l; a.out) & # Run two background commands sequentially sort <file | wc # Two-process pipeline sort <f | uniq | wc # Three-process pipeline ls -l *.c # List all files ending in .c ls -l [a-c]* # List all files beginning with a, b, or c ls -l ? # List all one-character file names ls ? # List the file whose name is question mark ls '???' # List the file whose name is three question marks v=/usr/ast # Set shell variable v ls -l $v # Use shell variable v PS1='Hi! ' # Change the primary prompt to Hi! PS2='More: ' # Change the secondary prompt to More: ls -l $HOME # List the home directory echo $PATH # Echo the search path echo $? # Echo exit status of previous command in decimal echo $$ # Echo shell's pid in decimal echo $! # Echo PID of last background process echo $# # Echo number of parameters (shell script) echo $2 # Echo second parameter (shell script) echo "$2" # Echo second parameter without expanding spaces echo $* # Echo all parameters (shell script) echo $@ # Echo all parameters (shell script) echo "$@" # Echo all parameters without expanding spaces The shell uses the following variables for specific purposes: SHELL the path of the current shell HOME the default value for the cd(1) command PATH the directories to be searched to find commands IFS the internal field separators for command strings PS1 the primary shell prompt PS2 the secondary shell prompt There are various forms of substitution on the shell command line: `...` Command string between back-quotes is replaced by its output "..." Permits variable substitution between quotes '...' Inhibits variable substitution between quotes $VAR Replaced by contents of variable VAR ${VAR} Delimits variable VAR from any following string The expressions below depend on whether or not VAR has ever been set. If VAR has been set, they give: ${VAR-str} Replace expression by VAR, else by str ${VAR=str} Replace expression by VAR, else by str and set VAR to str ${VAR?str} Replace expression by VAR, else print str and exit shell ${VAR+str} Replace expression by str, else by null string If a colon is placed after VAR, the expressions depend on whether or not VAR is currently set and non-null. The shell has a number of built-in commands: : return true status . fn execute shell script fn on current path break [n] break from a for, until or while loop; exit n levels continue [n] continue a for, until or while loop; resume nth loop cd [dir] change current working directory; move to $HOME eval cmd rescan cmd, performing substitutions eval rescan the current command line exec cmd execute cmd without creating a new process exec <|> with no command name, modify shell I/O exit [n] exit a shell program, with exit value n export [var] export var to shell's children; list exported variables pwd print the name of the current working directory read var read a line from stdin and assign to var readonly [var] make var readonly; list readonly variables set -f set shell flag (+f unsets flag) set str set positional parameter to str set show the current shell variables shift reassign positional parameters (except ${0}) one left times print accumulated user and system times for processes trap arg sigs trap signals sigs and run arg on receipt trap list trapped signals umask [n] set the user file creation mask; show the current umask wait [n] wait for process pid n; wait for all processes The shell also contains a programming language, which has the following operators and flow control statements: # Comment The rest of the line is ignored = Assignment Set a shell variable && Logical AND Execute second command only if first succeeds || Logical OR Execute second command only if first fails (...) Group Execute enclosed commands before continuing for For loop (for ... in ... do ... done) case Case statement ((case ... ) ... ;; ... esac) esac Case statement end while While loop (while ... do ... done) do Do/For/While loop start (do ... until ...) done For/While loop end if Conditional statement (if ... else ... elif ... fi) in For loop selection then Conditional statement start else Conditional statement alternative elif Conditional statement end until Do loop end fi Conditional statement end SEE ALSO
echo(1), expr(1), pwd(1), true(1). SH(1)
All times are GMT -4. The time now is 11:06 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy