[Solved] How to refer to input file in code?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers [Solved] How to refer to input file in code?
# 1  
Old 11-14-2012
[Solved] How to refer to input file in code?

This may be a dumb question, but googling is not giving me an answer. I'm trying to figure out how to refer to an input file in my code.

Lets say i run a script in bash:

"sh shellscript.sh inputfile"
(Inputfile will be variable...whatever file i run the script on)

I wanted to make variables like "DIR=dirname inputfile" and "BASE = basename inputfile" so that I can use those to make subsequent files based off of the basename and put them in directories based on the dirname rather than having to cd to the directory to run the script and keep the output files in that folder. The problem is that I don't know how to refer to the inputfile to initially set these variables.

Also, if I set these variables at the beginning of the whole shell script, they will stay throughout for all of the other commands I am performing, right?
# 2  
Old 11-14-2012
Positional parameters is the term you need to look for when searching. They should be documented in your shell's manual page. They are shell variables (aka parameters) of the form $1, $2 ... $N, where N is the number of arguments with which the script was called. You'll also want to learn about the related special variables $* and $@.

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 3  
Old 11-14-2012
Quote:
Originally Posted by alister
Positional parameters is the term you need to look for when searching. They should be documented in your shell's manual page. They are shell variables (aka parameters) of the form $1, $2 ... $N, where N is the number of arguments with which the script was called. You'll also want to learn about the related special variables $* and $@.

Regards,
Alister
Thanks! Finally got the right search term. After a little more searching, fyi for posterity, i set the variables with:

DIR=`dirname $1`
INPUT=`basename $1`


I was having problems before too because I didn't realize that there could be no spaces when setting variables!
Works now, thanks again.

EDIT: Not working... sort of pissing me off. I did this the first time, and it returned the dirname and basename of the file the script was running on with $1, but now it won't anymore. dirname is empty and it just returns "usage:dirname path"

EDIT: And it works again...I realized that getting the dirname from $1 or $0 the way I am doing it gets problems if any of the folders in the path have spaces in them because i assume that it takes the space for a new "field"... Might be using improper terminology, but $1 might become $2 for example. My solution was to remove spaces from folder names... Anyone know how to do this otherwise so that there won't be a problem?

Last edited by legato22; 11-14-2012 at 02:44 PM..
# 4  
Old 11-14-2012
Quote:
Originally Posted by legato22
Thanks! Finally got the right search term. After a little more searching, fyi for posterity, i set the variables with:

DIR=`dirname $1`
INPUT=`basename $1`


I was having problems before too because I didn't realize that there could be no spaces when setting variables!
Works now, thanks again.

EDIT: Not working... sort of pissing me off. I did this the first time, and it returned the dirname and basename of the file the script was running on with $1, but now it won't anymore. dirname is empty and it just returns "usage:dirname path"

EDIT: And somehow it randomly works again.
As a wild guess, I'd say that the times it didn't work, you invoked your shell script with no operands. Smilie

In other words, yourscript filename should work, but yourscript will fail with errors similar to what you described above.
# 5  
Old 11-14-2012
Quote:
Originally Posted by Don Cragun
As a wild guess, I'd say that the times it didn't work, you invoked your shell script with no operands. Smilie

In other words, yourscript filename should work, but yourscript will fail with errors similar to what you described above.
I checked, I did use operands those times. Repeated mistakes when there are spaces in directory paths reveal that to be the problem.
# 6  
Old 11-14-2012
Quote:
Originally Posted by legato22
I checked, I did use operands those times. Repeated mistakes when there are spaces in directory paths reveal that to be the problem.
OK. So, I assume you've figured out this can be fixed by using appropriate quoting. In this case:
Code:
DIR=`dirname "$1"`
INPUT=`basename "$1"`

or, preferably:
Code:
DIR=$(dirname "$1")
INPUT=$(basenamae "$1")

This User Gave Thanks to Don Cragun For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Python: Refer a properties file from different location

Hi All, I'm having a python script: test.py in /path/to/script/test.py I'm using a properties file: test_properties.py (it is having values as dictionary{}) which is in same DIR as the script. Sample Properties file: params = { 'target_db' : 'a1_db' 'src_db' : ... (15 Replies)
Discussion started by: saps19
15 Replies

2. Shell Programming and Scripting

[Solved] How to refer more than 9 command line inputs for a scripts in korn shell?

Hi all, I have a script which should take more than 9 command line inputs while running. Likescript.sh a s d f g h j j k l o p i u y t r e w Now in the script if I have to access one of the input which is at position after 9, in this case say 'p' then how can I do that? echo $12 will not work... (15 Replies)
Discussion started by: pat_pramod
15 Replies

3. Shell Programming and Scripting

[Solved] Date as Input

Below is my Scenario. I wrote one script to search the specific log files for Yesterdays date and gives the result. I need a script like 1. Once I run the Script, The script should ask me which date I want to search. 2. Once i enter the date, That script should search the log files for... (3 Replies)
Discussion started by: Padmanabhan
3 Replies

4. UNIX for Dummies Questions & Answers

Hot to retrieve *.sql file names which we refer in .sh file.

Hi Guys, How to retrieve/get *.sql file names which we refer in all *.sh files. Can any one help me on this. Thanks, Kolipaka (3 Replies)
Discussion started by: lakshmanrk811
3 Replies

5. Shell Programming and Scripting

[Solved] problem - connecting code with external file

hello. this is the code #!/bin/sh total1024=0 total2048=0 total8192=0 if ; then if ; then while read variable do if ; then total1024=$(( $total1024 + 1 )) fi if ; then total2048=$((... (4 Replies)
Discussion started by: Telis
4 Replies

6. UNIX for Dummies Questions & Answers

12. If an ‘88’ Record with BAI Code ‘902’ was found on input file and not written to Output file, re

This is my input file like this 03,105581,,015,+00000416418,,,901,+00000000148,,,922,+00000000354,,/ 49,+00000000000416920,00002/ 03,5313236,,015,+00231036992,,,045,+00231036992,,,901,+00000048428,,/ 88,100,+0000000000000,0000000,,400,+0000000000000,0000000,/ 88,902,+0000000079077,,/... (0 Replies)
Discussion started by: sgoud
0 Replies

7. Shell Programming and Scripting

Append file based upon user input-- solved

Ok, I have a script with a commandline option that allows the user to add a custom function to the script file. I have tried everything in my limited knowledge of sed to get this to work and keep coming up short. I need sed to search for a line starting with a pattern, I've got that part so far,... (0 Replies)
Discussion started by: DC Slick
0 Replies

8. Shell Programming and Scripting

Automatic file input to code

i have got many files like this in my folder temp(say) imp_02042008.txt for date 02-04-2008 imp_03092009.txt for date 03-09-2009 imp_25112009.txt for date 25-11-2009 ................... ........ in some folder. and one of my shell code uses one of the above files based on date.... (9 Replies)
Discussion started by: Maruti
9 Replies

9. Shell Programming and Scripting

[code] Automatic File Input

i have got many files like this in my folder temp(say) imp_02042008.txt for date 02-04-2008 imp_03092009.txt for date 03-09-2009 imp_25112009.txt for date 25-11-2009 ................... ........ in some folder. and one of my shell code uses one of the above files based on date.... (0 Replies)
Discussion started by: Maruti
0 Replies

10. UNIX for Dummies Questions & Answers

Refer a remote file

I need to refer a remote(present on another unix server) directory from my unix machine as a local file. e.g. I have one directory D1 on 10.10.10.10 and i need to access files in this directory just like they are present on my unix machine 20.20.20.20. Is there any way out... i read a bit... (1 Reply)
Discussion started by: blackeyed
1 Replies
Login or Register to Ask a Question