Semi-newbie, so flame throwers to 'singe-only', please. ;-)
I have a large number of (say) .html files, where I'd like to do a recursive in-place search and replace a particular string. The following bit of perl works fine:
But, I can never remember the specific commends (getting old), so I generally dump this sort of thing into a script. Say, a bash script. But, I'm having a heck of a time getting the script to take command line args and pass them to the perl script. Imagine said script is called replace_string
Suppose I want to change the occurrence of 2013 to 2014. What I want to be able to do is type
> replace_string 2013 2014
So in my bash script, I've tried the following:
But, this doesn't work. I've tried putting double-quotes around $1 and $2, but..nada.
I'm guessing this is a simple no-brainer sort of thing, but I haven't sussed it out yet. Pointers to the obvious appreciated.
(Note: I've no doubt there are other ways to do the inplace search and replace, but that isn't the point here -- the problem is general -- passing bash shell comand args to a perl function)
Your shell variables should appear in double quotes outside of single quotes. In this simple case you can do
More complex perl code should be in single quotes, but ending around the shell variables as follows:
The shell sees 3 strings and does variable substitution in the middle string because it is in double quotes.
--
This won't work if the file names have space characters, or can result in 'too many arguments' if there are many files.
Safer is
Last edited by MadeInGermany; 02-07-2014 at 08:45 AM..
Reason: highlighted with colors
This User Gave Thanks to MadeInGermany For This Post:
Your shell variables should appear in double quotes outside of single quotes. In this simple case you can do
More complex perl code should be in single quotes, but ending around the shell variables as follows:
The shell sees 3 strings and does variable substitution in the middle string because it is in double quotes.
--
This won't work if the file names have space characters, or can result in 'too many arguments' if there are many files.
Safer is
Perfect. In spaces in my file names, but the occasional hyphen (I know, I should *never* use hyphens, but...)
Thanks very much for the clear and thorough response.
I found something insteresting when I tested passing arguments into my scripts.
My scripts is as below.
% cat passarg.env
#!/bin/csh
echo "passarg: argv = $argv argv = $argv"
passarg1.env $*
% cat passarg1.env
#!/bin/csh
echo "passarg1: argv = $argv argvp=$argv"
set str = "test... (5 Replies)
Hi All,
I am using the script for creating local queue and passing the arguments while running the script as below
n=0
while
do
e=`expr $n + 3`
echo 'DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'' | /apps/mqm_opt/bin/runmqsc $2
n=`expr $n + 1`
done
Running the... (5 Replies)
Hi Gurus,
Need some help with the shell scripting here.
#!/bin/ksh
ps -ef | grep -i sample.ksh | grep -v grep > abc.txt
if
then
echo "sample.ksh is executing"
else
echo "sample.ksh is not executing"
fi (1 Reply)
Hi I need to pass comma seperated arguments to a perl script?
It is like:
Exect.pl -d GUI1,GUI2,GUI3
and I need to store these argsGUI1,GUI2,GUI3 in an array.
can anyone suggest how to do that: (1 Reply)
Hello
Please i want to pass parameter (the string s) to the shell script:
Quote:
String s="Hello";
Process process = Runtime.getRuntime().exec("sh script1.sh");
How can i do please?
Thank you (0 Replies)
Hello everybody! First time posting here:)
Right, I am trying to pass arguments in my shell scripts using $1, $2 and $3 etc using if else statement........
This is my shell script which is based on serching the google website
#!/bin/sh
wget -t1 -E -e robots=off - -awGet.log -T 200 -H... (47 Replies)
Hi All,
I am trying to pass an argument called "Pricelist" to a Perl function, then the function will open and print out the contents of the file named "Pricelist". But i can't seem to do it using my below code. Can any expert give some advice?
#!/usr/local/bin/perl
$DATABASE =... (1 Reply)
hi I am new to shell programming.....my question is while running one of my shell program it stops in between to accept input from the user and proceeds furthur after giving input....I want to know whether I can set this input through some files so that the shell acript reads the input from the... (10 Replies)
I am playing around with Perl and wrote the script below that is executed from the command line, it will split data up in a file based on a value supplied. When executed you provide two arguments - the file that contains the data to be split and the character you want to split by. It works as... (4 Replies)