echo


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting echo
# 1  
Old 01-05-2011
echo

hi,

i am facing an issuse in echo with double quates " " .

Code:
 
while read i
do
uid=`echo $i | awk '{print $3}'`
login=`echo $i |awk '{print $2}'`
name=`echo $i | awk '{print $1}'`
echo "/usr/sbin/useradd -u $uid -g 200 -d /local/home/$login -m -s /bin/ksh -c "/"$name_CRQ"/" $login "
done <eg1

eg1 file contains user info

i am expecting an o/p like this

Code:
/usr/sbin/useradd -u 12345 -g 200 -d /local/home/e1234 -m -s /bin/ksh -c "john_CRQ" e1234

but i am getting

Code:
/usr/sbin/useradd -u 12345 -g 200 -d /local/home/e1234 -m -s /bin/ksh -c " " e1234

please help me with this.

Last edited by radoulov; 01-05-2011 at 07:15 PM.. Reason: Additional code tags added.
# 2  
Old 01-05-2011
Escape your double-quotes, or just avoid wrapping double-quotes around your "echo" command ... they technically aren't required.

Shell sees you opening your quote after the
Code:
echo

, then assumes you closed it after the
Code:
-c

.

Option 1: Escape double-quotes

Code:
echo "/usr/sbin/useradd -u $uid -g 200 -d /local/home/$login -m -s /bin/ksh -c \"/\"$name_CRQ\"/\" $login"

Option 2: No quotes
Code:
echo /usr/sbin/useradd -u $uid -g 200 -d /local/home/$login -m -s /bin/ksh -c "/"$name_CRQ"/" $login

-dufftime
This User Gave Thanks to dufftime For This Post:
# 3  
Old 01-06-2011
In addition, try this:
Code:
echo "/usr/sbin/useradd -u $uid -g 200 -d /local/home/$login -m -s /bin/ksh -c \"${name}_CRQ\" $login"

The curly brackets are necessary here, because an underscore (_) is a valid character in a variable name, so without them it the value of the variable $name_CRQ will be used which is empty.
This User Gave Thanks to Scrutinizer For This Post:
# 4  
Old 01-11-2011
sorry for late reply. now its working fine. Thanks guys
# 5  
Old 01-11-2011
Code:
while read i
do
uid=`echo $i | awk '{print $3}'`
login=`echo $i |awk '{print $2}'`
name=`echo $i | awk '{print $1}'`

could be coded more succinctly:
Code:
while read name login uid rest
do

Or
Code:
awk '{printf("/usr/sbin/useradd -u %s -g 200 -d /local/home/%s -m -s /bin/ksh -c \"%s_CRQ\" %s\n",$3,$2,$1,$2)}' eg1

This User Gave Thanks to binlib For This Post:
# 6  
Old 01-19-2011
Quote:
awk '{printf("/usr/sbin/useradd -u %s -g 200 -d /local/home/%s -m -s /bin/ksh -c \"%s_CRQ\" %s\n",$3,$2,$1,$2)}' eg1
this works fine, thanks for u help binlib SmilieSmilieSmilie
# 7  
Old 01-20-2011
In sh version you can parse line using read. Why last is xxx ? If line include extra data, xxx include it.
Code:
while read name login uid xxx
do
   echo "/usr/sbin/useradd -u $uid -g 200 -d /local/home/$login -m -s /bin/ksh -c \"${name}_CRQ\" $login "
done < eg1

If you need print <> " ; ... then HERE is nice solution - "printout template"
Code:
while read name login uid xxx
do
   cat <<-EOT
   /usr/sbin/useradd -u $uid -g 200 -d /local/home/$login -m -s /bin/ksh -c "${name}_CRQ" $login 
EOT
done < eg1

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Difference between echo `ls -l` and echo "`ls -l`" ?

Hi guys, Been messing around with shell programming for a couple of days and I found something that was pretty odd in the behavior of the echo command. Below is an example-: When I type the following in my /home directory from my lxterminal in Debian-: echo "`ls -l`" I get the... (2 Replies)
Discussion started by: sreyan32
2 Replies

2. UNIX for Dummies Questions & Answers

echo

Hello, I'm working with ksh. I was working with the echo command That is echo "Today is $date" which would show for example Toady is 7/12/12 which was fine however, know I only recieve the first part of the echo without the date. Today is Could I have edited the echo... (9 Replies)
Discussion started by: JD_Sal
9 Replies

3. 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

4. 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

5. Shell Programming and Scripting

Help with echo

Hi Guys, I need to print a value in the same line , But when we use the echo instead the loops (while), the value goes to the next line.. Can you help me in this.. Thanks For your help in advance. (6 Replies)
Discussion started by: mac4rfree
6 Replies

6. UNIX for Dummies Questions & Answers

How to correctly use an echo inside an echo?

Bit of a weird one i suppose, i want to use an echo inside an echo... For example... i have a script that i want to use to take users input and create another script. Inside this script it creates it also needs to use echos... echo "echo "hello"" >$file echo "echo "goodbye"" >$file ... (3 Replies)
Discussion started by: mokachoka
3 Replies

7. Shell Programming and Scripting

echo !.

can someone tell me what does this code do? echo !. (2 Replies)
Discussion started by: ryandegreat25
2 Replies

8. 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

9. UNIX for Dummies Questions & Answers

echo

Is there a way to get echo to make newlines without using any type of quotes? I've done a lot of searches and went into my Linux book to no avail. I'm trying to write five separate lines to a file. I can get echo to accept all five lines like this echo \ \this is line 1\ \this is line 2\ >... (6 Replies)
Discussion started by: Trekker182
6 Replies

10. Shell Programming and Scripting

echo

what is the meaning of this echo $description | wc -m` -ne "1" (0 Replies)
Discussion started by: debasis.mishra
0 Replies
Login or Register to Ask a Question