Pass arguments to bash script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pass arguments to bash script
# 1  
Old 07-14-2013
Pass arguments to bash script

myscript.sh

Code:
#!/bin/bash

ARGA=$1

if [ "${ARGA}" = "jsmith" ] ; then
        echo "${ARGA}:Confirmed"
else
        echo "${ARGA}:Unconfirmed"
fi

when I run the above script from the command line, i run it as:

Code:
./myscript.sh jsmith

now some times, i need to runn it this way:

Code:
sed -n 1,9p myscript.sh | bash

notice, there's no where for me to pass whatever argument i need to pass in this command.

does anyone know of a way around this? i want to be able able to pass the "jsmith" as an argument when using the sed command.

my weak attempts at this were:

Code:
sed -n 1,9p myscript.sh | bash jsmith

and

Code:
sed -n 1,9p myscript.sh | bash $*

# 2  
Old 07-14-2013
Quote:
Originally Posted by SkySmart
myscript.sh

Code:
#!/bin/bash

ARGA=$1

if [ "${ARGA}" = "jsmith" ] ; then
        echo "${ARGA}:Confirmed"
else
        echo "${ARGA}:Unconfirmed"
fi

when I run the above script from the command line, i run it as:

Code:
./myscript.sh jsmith

OK, good.
Quote:
Originally Posted by SkySmart

now some times, i need to runn it this way:

Code:
sed -n 1,9p myscript.sh | bash

notice, there's no where for me to pass whatever argument i need to pass in this command.
Why in the world do you want to do this? The stream editor is not a shell; you aren't changing anything in the script; you are just making it hard to pass an argument to the script and making it EXTREMELY inefficient.
Quote:
Originally Posted by SkySmart
does anyone know of a way around this? i want to be able able to pass the "jsmith" as an argument when using the sed command.

my weak attempts at this were:

Code:
sed -n 1,9p myscript.sh | bash jsmith

and

Code:
sed -n 1,9p myscript.sh | bash $*

You have a working script. You know how to pass parameters to it. What are you trying to do with sed that will be different that what was already working for you without using sed???
# 3  
Old 07-14-2013
Quote:
Originally Posted by Don Cragun
OK, good.Why in the world do you want to do this? The stream editor is not a shell; you aren't changing anything in the script; you are just making it hard to pass an argument to the script and making it EXTREMELY inefficient.
You have a working script. You know how to pass parameters to it. What are you trying to do with sed that will be different that what was already working for you without using sed???
thanks don. i do understand it can be considered as inefficient. but i'm working on something that uses the idea behidn this for a different purpose. i just wanted to know if what i was trying to do is doable. i wouldn't do this with any of my other scripts. just this one in particular
# 4  
Old 07-14-2013
Quote:
Originally Posted by SkySmart
thanks don. i do understand it can be considered as inefficient. but i'm working on something that uses the idea behidn this for a different purpose. i just wanted to know if what i was trying to do is doable. i wouldn't do this with any of my other scripts. just this one in particular
If you explain what "different purpose", there is probably an easy way to do it in the shell script itself.

I repeat: What are you trying to do?
# 5  
Old 07-14-2013
Quote:
Originally Posted by Don Cragun
If you explain what "different purpose", there is probably an easy way to do it in the shell script itself.

I repeat: What are you trying to do?
this is related to this thread:

https://www.unix.com/shell-programmin...writing-2.html

i would like to be able to plug in as many arguments as i want to in replacement of jsmith.
# 6  
Old 07-14-2013
Self modifying code is generally not a good idea. Would you consider something like the following instead?
Code:
#!/bin/bash
IAm=${0##*/}
IAmDone=".$IAm"
ARGA=$1

if [ -f "$IAmDone" ]
then
        date
        exit
fi

if [ "${ARGA}" = "jsmith" ]
then    echo "${ARGA}:Confirmed"
        touch "$IAmDone"
else    echo "${ARGA}:Unconfirmed"
fi

This will work like your script originally worked until it confirms that jsmith was passed in as an argument. Any time it is called after that, it will just print the current date and exit. For example, the following commands:
Code:
./myscript.sh abc;./myscript.sh jsmith;./myscript.sh abc;./myscript.sh jsmith

produces the output:
Code:
abc:Unconfirmed
jsmith:Confirmed
Sun Jul 14 19:53:06 PDT 2013
Sun Jul 14 19:53:06 PDT 2013


Last edited by Don Cragun; 07-14-2013 at 11:59 PM.. Reason: Fix autocorrection induced typo.
This User Gave Thanks to Don Cragun For This Post:
# 7  
Old 07-15-2013
Quote:
Originally Posted by Don Cragun
Self modifying code is generally not a good idea. Would you consider something like the following instead?
Code:
#!/bin/bash
IAm=${0##*/}
IAmDone=".$IAm"
ARGA=$1

if [ -f "$IAmDone" ]
then
        date
        exit
fi

if [ "${ARGA}" = "jsmith" ]
then    echo "${ARGA}:Confirmed"
        touch "$IAmDone"
else    echo "${ARGA}:Unconfirmed"
fi

This will work like your script originally worked until it confirms that jsmith was passed in as an argument. Any time it is called after that, it will just print the current date and exit. For example, the following commands:
Code:
./myscript.sh abc;./myscript.sh jsmith;./myscript.sh abc;./myscript.sh jsmith

produces the output:
Code:
abc:Unconfirmed
jsmith:Confirmed
Sun Jul 14 19:53:06 PDT 2013
Sun Jul 14 19:53:06 PDT 2013

im curious, why isn't a self modifying code a good idea?
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

Need to pass arguments while running a Shell Script

Shell Script Gurus, I am writing a shell script which needs User ID's to pass as an Arguments in command line while executing. Can this be doable? I've never done this, If you give a sample script that would be helpful, Thanks. (1 Reply)
Discussion started by: shekar777
1 Replies

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

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

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

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

7. UNIX for Advanced & Expert Users

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 : 1 2 y ... (3 Replies)
Discussion started by: geek.ksa
3 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