Printing a file within a cat call


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Printing a file within a cat call
# 8  
Old 06-05-2013
How about
Code:
cat<<eoi>inpfile Some standard lines of the program that is going to execute inpfile .... 
$key 
$(< geom.txt)
Some other standard lines...
eoi

# 9  
Old 06-05-2013
Quote:
Originally Posted by elixir_sinari
Why use cat at all? Use the shell itself geo=$(<geom.txt).
Smilie
# 10  
Old 06-05-2013
Quote:
Originally Posted by elixir_sinari
Why use cat at all? Use the shell itself geo=$(<geom.txt).
One reason might be that even though it will work in bash and ksh93, it is not POSIX compliant and so for portability it would be best to use $(cat file)
This User Gave Thanks to Scrutinizer For This Post:
# 11  
Old 06-05-2013
Scrutinizer, isn't that a command substitution form?

If so isn't it suppose to work on all POSIX shell?
# 12  
Old 06-05-2013
Quote:
Originally Posted by Scrutinizer
One reason might be that even though it will work in bash and ksh93, it is not POSIX compliant and so for portability it would be best to use $(cat file)
Yes. However, there is no need to save the contents of file in a variable. Just use the line:
Code:
$(cat geom.txt)

in the here document instead of:
Code:
geo=$(cat geom.txt)

before the here document and:
Code:
$geo   # inserts contents of geom.txt here

in the here document.

---------- Post updated at 12:35 ---------- Previous update was at 12:22 ----------

Quote:
Originally Posted by Yoda
Scrutinizer, isn't that a command substitution form?

If so isn't it suppose to work on all POSIX shell?
No. The command substitution $(< file) as defined by the standard is the equivalent to the command:
Code:
< file

executed in a subshell and the standard output of that command (which would be nothing) would be the expansion of the command substitution.

In theory, I'm not sure that the standards allow shells to actually produce any output in this case, but since it isn't the type of command you would expect to find in a standards conforming shell script, no one has complained. If someone did complain that a shell was non-conforming because of this construct, I'm sure the Austin Group would issue an interpretation saying that the standard is "clear and wrong" and either specify the current behavior in the next revision of the standard or explicitly state that the behavior is unspecified in this case (which would allow shells to continue to provide this extension).
These 2 Users Gave Thanks to Don Cragun For This Post:
# 13  
Old 06-05-2013
But please take Rudi's solution and save memory!
The backticks even work in an old Unix shell:
Code:
cat<<eoi>inpfile
Some standard lines of the program that is going to execute inpfile ....
$key
`cat geom.txt`
Some other standard lines...
eoi

or, without a here document (again goes to memory),
Code:
echo "\
Some standard lines of the program that is going to execute inpfile ....
$key
`cat geom.txt`
Some other standard lines...
" > inpfile

Or
Code:
{
echo "\
Some standard lines of the program that is going to execute inpfile ....
$key"
cat geom.txt
echo "\
Some other standard lines...
"
} > inpfile


Last edited by MadeInGermany; 06-05-2013 at 08:28 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Ssh cat file output into a file on local computer

Hello, I'm on a remote computer by SSH. How can I get the output of "cat file" into a file on the local computer? I cannot use scp, because it's blocked. something like: ssh root@remote_maschine "cat /file" > /locale_machine/file :rolleyes: (2 Replies)
Discussion started by: borsti007
2 Replies

2. Shell Programming and Scripting

Cat Command on File not printing "Blank" Lines?

Hello All, I have a bash script and in it at some point I call an Expect Script that does some stuff and saves its output in a ".txt" file. Example "/path/to/my/file/Expect_Output.txt" file: notice the 2nd line is empty in the file... Data for Host-1 (192.168.1.110) Checking the... (2 Replies)
Discussion started by: mrm5102
2 Replies

3. UNIX for Advanced & Expert Users

for i in `cat file` do

in bash: for i in `cat file` ; do echo $i done; how will i do this in perl ? (10 Replies)
Discussion started by: linuxgeek
10 Replies

4. Shell Programming and Scripting

Cat file

how to cat a file by ignoring first line and last line (1 Reply)
Discussion started by: thelakbe
1 Replies

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

6. UNIX for Dummies Questions & Answers

Difference between cat , cat > , cat >> and touch !!!

Hi Can anybody tell the difference between Difference between cat , cat > , cat >> and touch command in UNIX? Thanks (6 Replies)
Discussion started by: skyineyes
6 Replies

7. UNIX for Dummies Questions & Answers

How to cat file

I want to cat a file with only show the line contain '/bin/bash' but don't show the line contain 'load' (don't show if the line contain 'load' and '/bin/bash' together), how to type in the command? thk a lot! (2 Replies)
Discussion started by: zp523444
2 Replies

8. UNIX for Dummies Questions & Answers

Easiest way to cat out first 100 lines of a file into a different file?

Not sure how to do this exactly.. just want to take the first 100 lines of a file and cat it out into a second file. I know I can do a more on a file and > it into a different file, but how can I make it so only the first 100 lines get moved over? (1 Reply)
Discussion started by: LordJezo
1 Replies

9. UNIX for Dummies Questions & Answers

cat and lp or pr printing of file

Can you use cat to send the first 25 lines of a file to the printer? I'm thinking I can pipe it with '|' but I'm not school to check printer output. With the 'nl' used, all lines are numbered on the print out, but how does one number only the blank lines? Thanks:) (1 Reply)
Discussion started by: bitwize
1 Replies
Login or Register to Ask a Question