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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Cat a script, pipe it, then pass arguments to it?
# 1  
Old 06-06-2016
Cat a script, pipe it, then pass arguments to it?

suppose i have a perl script that is normally run this way:
Code:
./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, which is clearly not going to work:

Code:
cat checkdisk.pl | perl

or

cat checkdisk.pl | perl -H hostname -w 40 -c 80


what im trying to do here doesn't just apply to perl scripts. i may have to do this for shell scripts, ruby scripts, python scripts.

i need to be able to pass the original arguments to the script if it is being piped.

any ideas?
# 2  
Old 06-06-2016
Code:
perl checkdisk.pl -H hostname -w 40 -c 80

# 3  
Old 06-06-2016
Code:
$ echo 'echo asdf $1 $2 $3'

asdf $1 $2 $3

# For bash scripts, sh -s arg1 arg2 arg3 ...
# Be sure to use the appropriate shell, bash for bash scripts,
# ksh for ksh scripts, etc.
$ echo 'echo asdf $1 $2 $3' | sh -s a b c

asdf a b c

# For perl scripts:
$ cat script.pl | perl - arg1 arg2 arg3 ...

You can tell this is kind of language specific.
This User Gave Thanks to Corona688 For This Post:
# 4  
Old 06-06-2016
Quote:
Originally Posted by Corona688
Code:
$ echo 'echo asdf $1 $2 $3'

asdf $1 $2 $3

# For bash scripts, sh -s arg1 arg2 arg3 ...
# Be sure to use the appropriate shell, bash for bash scripts,
# ksh for ksh scripts, etc.
$ echo 'echo asdf $1 $2 $3' | sh -s a b c

asdf a b c

# For perl scripts:
$ cat script.pl | perl - arg1 arg2 arg3 ...

You can tell this is kind of language specific.
looks like this is exactly what i needed.

so we have answers for:

shell scripts
perl scripts

any ideas on:

python?
ruby?
# 5  
Old 06-06-2016
As stated above, this is language specific and I can't answer for every single possible language.

So I can't speak for ruby, but python seems to work the same way as perl:

Code:
$ echo 'import sys; print(sys.argv[2]);' | python - a b c

b

$

Try the same for ruby and get back to me.
This User Gave Thanks to Corona688 For This Post:
# 6  
Old 06-06-2016
Also, I should note, there's an important difference between running scripts like this and running them from a file: When you run from a pipe, stdin will not be a keyboard. So if any of these scripts are interactive, that may be a problem.
# 7  
Old 06-06-2016
Quote:
Originally Posted by Corona688
As stated above, this is language specific and I can't answer for every single possible language.

So I can't speak for ruby, but python seems to work the same way as perl:

Code:
$ echo 'import sys; print(sys.argv[2]);' | python - a b c

b

$

Try the same for ruby and get back to me.
it worked. thank you so much!
This User Gave Thanks to SkySmart 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

Function in one-linef and pass arguments in a pipe

I need to declare a function, this function will contain a script, this script cannot be in a file but must be piped. and then, for the script to run, i need to pass arguments to it. everything has to be on one line. so i'm basically looking for a one-liner here's what i'm doing: myfunc ()... (3 Replies)
Discussion started by: SkySmart
3 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

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

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

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