Visit Our UNIX and Linux User Community


Question regarding cat command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Question regarding cat command
# 1  
Old 08-06-2009
Question regarding cat command

Hello Friends,

I have a question, i am trying to write a shell script in the bash shell.

#!/bin/sh
NAWK=/bin/nawk
AWK=/bin/awk

FIX_XML_PATH=/home/administrator/testfix/fix/
Y=`ls $FIX_XML_PATH | grep xml`
echo $Y
cat $Y

in this case when i do the echo $Y command it gives me the file name and when i do cat $Y, is give the error that not a file or directory.

What am i doing wrong can u please suggest?

Thanks
AdiSmilie
# 2  
Old 08-06-2009
adi, can you tell me what is the value of Y. I think you are getting more than one filename. In that case, it may throw the error.

Can you run the script as
Code:
sh -vx <scriptname>

paste the logs that will help us in figuring out the error easily.
# 3  
Old 08-06-2009
Quote the variable if you have spaces in your filename:

Code:
cat "$Y"

Regards
# 4  
Old 08-06-2009
Some comments:
- If you use bash, then start your script with /bin/bash.
- NAWK and AWK are unused, they are distracting.
- It is possible you are using a version of ls that add some characters to the file name that makes it unusable by cat.
- It is also possible the xml filename contains blanks, in such case, you'll need to use double quotes at several places in your script.
- mac4rfree suggestion is incorrect, multiple files are happily displayed by cat.

What says:
Code:
echo $Y | od -c

?
# 5  
Old 08-06-2009
Hi.

This is probably because the script is not in the same directory as the xml files, so you need to add the path to the filenames.

One option is:

Code:
#!/bin/sh
NAWK=/bin/nawk
AWK=/bin/awk
FIX_XML_PATH=/root/tmp/XML/
Y=`ls $FIX_XML_PATH | grep xml`
echo $Y
echo $Y | awk -v D=$FIX_XML_PATH -v RS=" " '{system( "cat " D $1)}'

Or a better option is to change the line:
Code:
Y=`ls $FIX_XML_PATH/*.xml`


Last edited by Scott; 08-06-2009 at 11:33 AM..
# 6  
Old 08-06-2009
Hi,
I chaged the script a little bit,
#!/bin/sh

FIX_XML_PATH=/home/administrator/testfix/fix
FIX_FILE=`ls $FIX_XML_PATH | grep xml`

echo $FIX_FILE
cat $FIX_FILE

Variable $FIX_FILE store a xml file.Smilie


*******logs*******


$ sh -vx xmlParse.sh
#!/bin/sh

FIX_XML_PATH=/home/administrator/testfix/fix
+ FIX_XML_PATH=/home/administrator/testfix/fix
FIX_FILE=`ls $FIX_XML_PATH | grep xml`
ls $FIX_XML_PATH | grep xml
++ ls /home/administrator/testfix/fix
++ grep xml
+ FIX_FILE=fix_com.ibm.rational.clearcase.nt_i386.ifix0003_7.1.2.0000-7-
0-2009B-TESTFIX-CC-D090803_for_7.1.2.0000-7-1-0-02-00-2009B-D090617.xml

echo $FIX_FILE
+ echo fix_com.ibm.rational.clearcase.nt_i386.ifix0003_7.1.2.0000-7-1-0-
09B-TESTFIX-CC-D090803_for_7.1.2.0000-7-1-0-02-00-2009B-D090617.xml
fix_com.ibm.rational.clearcase.nt_i386.ifix0003_7.1.2.0000-7-1-0-02-00-2
TFIX-CC-D090803_for_7.1.2.0000-7-1-0-02-00-2009B-D090617.xml
cat $FIX_FILE
+ cat fix_com.ibm.rational.clearcase.nt_i386.ifix0003_7.1.2.0000-7-1-0-0
9B-TESTFIX-CC-D090803_for_7.1.2.0000-7-1-0-02-00-2009B-D090617.xml
cat: fix_com.ibm.rational.clearcase.nt_i386.ifix0003_7.1.2.0000-7-1-0-02
B-TESTFIX-CC-D090803_for_7.1.2.0000-7-1-0-02-00-2009B-D090617.xml: No su
or directory
# 7  
Old 08-06-2009
franklin, one interesting i found,

Code:
ad02 $ cat $a
10081551
10081599
10082234
10082259
20081134
20081159
30082232
10087721
kjlsab;kfd
kjbnaskj
kjabn;kj
akjldsb;k
akj;dhbsa
ad02 $ cat "$a"
cat: 0652-050 Cannot open aout.xml
bout.xml
cout.xml.
ad02 $ echo $a
aout.xml bout.xml cout.xml
ad02 $

here without quotes, it opens all the three files, but with quotes, it is throwing an error.

Previous Thread | Next Thread
Test Your Knowledge in Computers #121
Difficulty: Easy
The UNIX certification mark is commercially licensed by The Open Group.
True or False?

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

Cat/File Descriptor Question

For the command below, I need to understand what exactly the command does and provide an examples for which the output will be saved to file save2... From my understanding, if the file provides an error in the first half of the pipe, it'll save to save1 and will never give an error to save to... (2 Replies)
Discussion started by: ayz649
2 Replies

2. Shell Programming and Scripting

Simple cat and echo question

Apologies, probably a really simple problem: I've got a text file (nh.txt) with this in it: user1 email1 email2 user2 email1 email2 etc With the following basic script: for tline in $(cat nh.txt) do echo "**********" echo $tline done ... (3 Replies)
Discussion started by: nelmo
3 Replies

3. Shell Programming and Scripting

cat question

hello! why this works? cd /home/user cat * | ecasound -i stdin -o jack and this doesn't? cd /home/user/somedirectory cat * | ecasound -i stdin -o jack somedirectory are full with exe files which are the best source for this sort of noise thing (10 Replies)
Discussion started by: karlhungus
10 Replies

4. UNIX for Dummies Questions & Answers

Question regarding Cat

Can we concatenate say, I have a few files prefixing with 2009... So now i want all the 2009 files into one single file.. Can this be achieved???? (4 Replies)
Discussion started by: saggiboy10
4 Replies

5. Shell Programming and Scripting

cat question

Can any one guide me how can i accomplish this by script i continuously receive files via our ftp server into a certain folder is there a way i can take those files cat it to a new file by hour and create a new file when new hour starts? (4 Replies)
Discussion started by: shehzad_m
4 Replies

6. Shell Programming and Scripting

Easy cat question

I am having problems getting a list of filenames that I want from a directory. example: I have 3 files - filename.xxx.20110505.123030 filename.yyy.20110505.123030 filename.zzz.20110505.123030 There may be multiple xxx,... (3 Replies)
Discussion started by: Drenhead
3 Replies

7. OS X (Apple)

Question about cat and echo

Hello, I am trying to send text to a USB to serial adaptor and then to an external speech synthesizer. I tried using the cat and echo commands with no luck. I have gotten some audio output from my synthesizer using Kermit a terminal emulator, so I am pretty sure my synthesizer and my USB to serial... (1 Reply)
Discussion started by: jamesapp
1 Replies

8. Shell Programming and Scripting

cat in the command line doesn't match cat in the script

Hello, So I sorted my file as I was supposed to: sort -n -r -k 2 -k 1 file1 | uniq > file2 and when I wrote > cat file2 in the command line, I got what I was expecting, but in the script itself ... sort -n -r -k 2 -k 1 averages | uniq > temp cat file2 It wrote a whole... (21 Replies)
Discussion started by: shira
21 Replies

9. Shell Programming and Scripting

question about cat in script

hi all i have some script echo $$ > process-id d='cat process-id' if test-s "TMP"$d then echo "serv1" else echo "serv2" fi the variable d should contain the number of the process, instead of that it contains 'cat process-id' how shall i do that the d will contain only the number?... (6 Replies)
Discussion started by: naamas03
6 Replies

10. Shell Programming and Scripting

strange cat question.

Does anyone know what the microprograms behind cat (and other commands) are like? In what language are those programs designed? Is their source available somewhere? No particular reason, just wondering. I know it's a bit strange... (3 Replies)
Discussion started by: sanchopansa
3 Replies

Featured Tech Videos