How to pass arguments to an interactive script


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How to pass arguments to an interactive script
# 1  
Old 11-24-2009
How to pass arguments to an interactive script

Hey guys,

I have an interactive script that is quite critical to our production environmentl thus updating it to run non-interactively is not an option.

The script takes a varying number of arguments, which it ques untill user confirm end of data entry

e.g of user input [arguments]:
Code:
1
2
y            #add another arguments set
3
4
n            #this is last set of arguments
y            #start processing

the arguments to be passed to the script are in a file. say file.in

i tried using a here-document, but it turns out that you can't put a here-document in a file as i kept getting "terminator not found" error message from ksh
i wanted to run the script like this:
script << here_doc

where here_doc had:
Code:
$
arguments
$

it didn't work! as explained above.

now the funny part, if i pass the arguments through a pipe to the script standard input, it works when using echo or print to print the arguments to standard output:

i.e. [Korn shell]
Code:
echo "1\n2\nn\ny" | myscript

^^ this works perfectly, my script runs and reads its input from the pipe. print also works as above

but my problem is, i have a file of these arguments that i want the script to sequentially read its input from.

if I use cat, it doesn't not work!!! the script reads NULL in the first variable!!

Code:
cat file.in | myscript

the same also happens when I do
myscript < file.in #script reads NULL in first variable

by the way, the script that is trying to run this script is on another machine so it ssh-es to the host machine and run the script. But i don't think this has anything to do with all this.
e.g.
Code:
ssh me@remotehost 'myscript'

Can anybody please suggest something to get myscript to read args from a file?

Thanks in advance
# 2  
Old 11-24-2009
Hi,

you can pass file name as a argument to Your shell script like this

$ script.sh filename

in shell script arguments are stored into special variables i.e first argument is stored into $1,second in $2 .....if you want to get all arguments in one go use $*.

so inside the script use :

$ filename=$1 #to get the file name.

Then use for loop to get the contents of file like this..

for i in `cat $filename`
do
firstline=$i
your logic..........

done

Note : if the file location is differ then script location the use relative path name as :
$ script.sh /home/rajiv/filename

Last edited by rajiv1625; 12-07-2009 at 02:01 AM..
# 3  
Old 12-05-2009
Quote:
Originally Posted by rajiv1625
if you want to get all arguments in one go use $0.
I am new to the forum so I was browsing some of the old threads, I noticed this post and unless this works differently in the shell you are using the above quote is incorrect. Maybe it was just an oversight.

$0 refers to the name of the command itself, $* will provide all arguments at once. See below:

Code:
$ ./foo.sh 1 2 3 4 5
This was the dollar 1: 1
This was the dollar 2: 2
This was the dollar 3: 3
This was the dollar *: 1 2 3 4 5
This was the dollar 0: ./foo.sh

$ cat foo.sh
#!/bin/sh
echo "This was the dollar 1: $1"
echo "This was the dollar 2: $2"
echo "This was the dollar 3: $3"
echo "This was the dollar *: $*"
echo "This was the dollar 0: $0"

# 4  
Old 12-06-2009
sorry , it was a mistake.

Last edited by rajiv1625; 12-07-2009 at 02:00 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Cat a script, pipe it, then pass arguments to it?

suppose i have a perl script that is normally run this way: ./checkdisk.pl -H hostname -w 40 -c 80 but, for whatever reason, i cannot run the script directly as it should. But i can cat it through pipe. How can i pass the arguments "-H hostname -w 40 -c 80"? so this is what i'm doing,... (6 Replies)
Discussion started by: SkySmart
6 Replies

2. Shell Programming and Scripting

Pass Arguments to Command from Shell Script

Hi all, I am working on a project, in which I have to connect to Bluetooth low energy device. I am able to connect and do data transfer from command line. But I want to do from script Here is my script #!/bin/bash #sudo hcitool -i hci0 lescan sleep 1 sudo hcitool -i hci0 lecc --random... (8 Replies)
Discussion started by: nithin@embdes
8 Replies

3. Shell Programming and Scripting

Passing arguments to interactive program through bash script, here document

Dear Users, I have installed a standalone program to do multiple sequence alignment which takes user parameters to run the program. I have multiple sequence files and want to automate this process through a bash script. I have tried to write a small bash code but its throwing errors. Kindly... (13 Replies)
Discussion started by: biochemist
13 Replies

4. Shell Programming and Scripting

How to pass arguments to an interactive script?

I've tried to find a solution to this, but I"m stumped. OS - RH Linux 5.9 I have a bash script <myProgram.sh> that gets executed manually and creates a small response file. I'm trying to automate the running of this script. When myProgram.sh runs, it prompts the user to enter 2 pieces of... (13 Replies)
Discussion started by: progkcp
13 Replies

5. Shell Programming and Scripting

Pass arguments to bash script

myscript.sh #!/bin/bash ARGA=$1 if ; then echo "${ARGA}:Confirmed" else echo "${ARGA}:Unconfirmed" fi when I run the above script from the command line, i run it as: ./myscript.sh jsmith now some times, i need to runn it this way: (8 Replies)
Discussion started by: SkySmart
8 Replies

6. Shell Programming and Scripting

How to pass arguments to an sftp script??

hi, Is it possible to pass arguments to a sftp script and use those arguments in the program? for example sftp_script FILENAME=$1 #!/usr/bin/expect spawn /usr/bin/sftp abc@ftp.abc.com expect "abc@ftp.abc.com's password:" send "pass\r" expect "sftp>" send "mput $FILENAME\r"... (9 Replies)
Discussion started by: Little
9 Replies

7. Shell Programming and Scripting

To pass arguments to makefile using script

Hi, I want to run a target of makfile using script by passing different arguments to it again n again. I i need to grep certain things from the log file. eg make abc KAB=8 BAC=8 >& KAB_BAC.log grep "timeA" KAB_BAC.log grep "timeB" KAB_BAC.log (i want to store the difference of the two time... (0 Replies)
Discussion started by: vdhingra123
0 Replies

8. Shell Programming and Scripting

need help to pass arguments in script

Hi, I have a my script here-- print "The Perl Script does the User health check and system health check...\n"; print "---------------------------------------------------------------------\n"; # use strict; my($OS); $OS = $^O; # need to test @ARGV before GetOptions shifts it if (@ARGV... (1 Reply)
Discussion started by: namishtiwari
1 Replies

9. Shell Programming and Scripting

Need help to pass arguments to shell script

Hi, I have a shell script called ftp.sh which is running continously in background. I tried passing arguments to this script but it did not worked out. Below is ftp.sh script. Please help me case $param in start) sleep_func "300" echo "!ksh $scr_ddir/ftp.sh... (1 Reply)
Discussion started by: bhargav20
1 Replies

10. Shell Programming and Scripting

How to pass arguments to a function in a shell script?

Hi, I have two shell variables $t1 and $t2 which I need to pass to a function in a shell script. The function will do some computation with those two variables and echo the resultant. But I do not know how to pass teh arguments. The function written is f1() {...... ........ } What should... (3 Replies)
Discussion started by: preetikate
3 Replies
Login or Register to Ask a Question