As you have spaces within your file or directory names bash word splitting is separating the filename into separate arguments. This could become even more troublesome if the paths contain newline or quote characters.
I'm a little unsure why you need to use eval at all here, but I will assume you are trying to do some sort of tricky expansion of the find arguments and will leave it alone for now. The solution could be much simpler (and safer) without eval being involved.
In this solution I am utilizing the find -print0 option with xargs -0. This is not available on all *NIX* flavors and may cause you some portability issues.
This User Gave Thanks to Chubler_XL For This Post:
Coming back to your original question: I don't think that in your output the "start seq" come from the invocation shown, as that will have ONLY one single parameter: the file name(s) that find detected. So: The value of PARAM is NOT correct as shown. Please give us more detail of what you want to achieve and what data are present, if you want to pursue that approach further (and not switch to the road indicated by Chubler_XL).
No.
As I could not have a good result, I have tried 2 ways to get the only and one passed parameter.
One way with this syntax : xxxxxx="${1}"
And another way like : xxxxxx="$1"
I must confess that I don't know the difference between the 2.
---------- Post updated at 14:29 ---------- Previous update was at 14:16 ----------
Quote:
Originally Posted by RudiC
Coming back to your original question: I don't think that in your output the "start seq" come from the invocation shown, as that will have ONLY one single parameter: the file name(s) that find detected. So: The value of PARAM is NOT correct as shown. Please give us more detail of what you want to achieve and what data are present, if you want to pursue that approach further (and not switch to the road indicated by Chubler_XL).
Not at all.
The param value is correct
. This is the name of a file "Computer Start Seq" which is kept in a folder named "Desktop" in the user home ( $HOME ) : "/home/user_install/Desktop/Computer Start Seq" .
This is what "find ....... -exec...... " pass to the called function within the '{}'
---------- Post updated at 14:47 ---------- Previous update was at 14:29 ----------
Quote:
Originally Posted by Chubler_XL
I'm a little unsure why you need to use eval at all here, but I will assume you are trying to do some sort of tricky expansion of the find arguments and will leave it alone for now. The solution could be much simpler (and safer) without eval being involved.
I use this syntax because I don't know other way to print what is the command which is going to be processed.
Quote:
Originally Posted by Chubler_XL
In this solution I am utilizing the find -print0 option with xargs -0. This is not available on all *NIX* flavors and may cause you some portability issues.
I did not really achieve what I wanted to do using xargs.
I will read the xargs man page and try to understand how your example works.
---------- Post updated at 14:56 ---------- Previous update was at 14:47 ----------
Quote:
Originally Posted by RudiC
Coming back to your original question: I don't think that in your output the "start seq" come from the invocation shown, as that will have ONLY one single parameter: the file name(s) that find detected. So: The value of PARAM is NOT correct as shown. Please give us more detail of what you want to achieve and what data are present, if you want to pursue that approach further (and not switch to the road indicated by Chubler_XL).
After many tries, it seems that the problem is solve by adding singglequote.
Bad result :
Good result in a real run : ---------- Post updated at 14:57 ---------- Previous update was at 14:56 ----------
Any comments are welcome.
Last edited by Don Cragun; 01-07-2018 at 11:34 PM..
Reason: Add missing CODE tags.
Your function is being called with three arguments. You can't fix that in the function. You have to fix that in the code that is calling your function!
Show us the code that invokes SEARCH_IN_CURRENT_ITEM. We would have to guess that the code that invokes your function is something like:
when it needs to instead be something like:
There is absolutely no difference between the two commands:
And, there is absolutely no difference between the two commands:
But there is a huge difference between the two commands:
Run the command:
and then run the above pairs of commands to see how they work.
Your function is being called with three arguments.
Not at all. The function is called with one parameter (a single string) which may have or not one or more space. This single string is the name of a file which is return by the find command.
Quote:
Originally Posted by Don Cragun
Show us the code that invokes SEARCH_IN_CURRENT_ITEM.
The complete script is in thread #1
Quote:
Originally Posted by Don Cragun
There is absolutely no difference between the two commands:
And, there is absolutely no difference between the two commands:
But there is a huge difference between the two commands:
Run the command:
and then run the above pairs of commands to see how they work.
I have below data:
DAY1=10202013
I am trying below but not getting the desired output:
COUNT=1
DATE=DAY$COUNT
echo "Date is $DATE"
However output I am getting is:
Date is DAY1
I wanted the output as:
Date is 10202013
I tried following as well:
DAY1=10202013
COUNT=1... (3 Replies)
So I'm writing a script to generate pairwise scores for how similar two strings are, and while I've been able to get it to work on a single script, I've been unable to iterate it.
So suppose I have a file thus
1234567890
1234567890
1234567899
first I need to assign two lines, by their... (3 Replies)
HI ,I am a new in Bash and ,I dont know how to pass a second parameter to this fuction,if the name of the passed argument is num works fine,but if I try to pass secondNum,dont recognized it
thanks
function check()
{
if(($(echo ${#num}) == 0 ))
then
echo No arguments passed.Try... (6 Replies)
Hello all. I've been trying to install NWCHEM in parallel on a new cluster, and have been able to get it to work on single processors by ignoring any MPI environment variables.
This is, of course, pretty worthless. So I'm starting over and trying to get thing set up right for the MPI. The key... (6 Replies)
Hi All,
I need to pass 2 variables name 'vamskt' and 'vamsi'.
Here is my question:
delete from gpi.usergroup where usg_user_id in ('vamskt');
delete from gpi.userroles where uro_user_id in ('vamskt');
delete from gpi.user where usr_id in ('vamskt');
insert into gpi.user... (3 Replies)
HI all,
Very new to shell programming and just wanted some help on how to solve the following problem.
I have a small shell script which searches a given file and extracts some string parameters. I want to now be able to call this script from another shell script and somehow pass the parameters... (11 Replies)
Hi,
Is there any way to pass variable to a sed script.For awk we have -v option.like that do we have any way to pass variable to a sed script from a awk script or from normal script?
Thanx,
sounder (1 Reply)
Does anybody have an explanation for the following:
The following scripts runs fine on IRIX64 6.5 but has bugs on Solaris 8.
#! /bin/sh
echo run only on an SGI machine
echo type in linenumber
read j
echo value
read value
awk -f rmspass2 level=$value $j'step1.mlf'
When the script is... (5 Replies)