Sponsored Content
Top Forums Shell Programming and Scripting find -exec How to add additional parameter when calling a funtion Post 303004819 by drl on Monday 9th of October 2017 05:23:22 PM
Old 10-09-2017
Hi.

Does this demonstration help?
Code:
#!/usr/bin/env bash

# @(#) s1       Demonstrate calling function from find -exec.

# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
em() { pe "$*" >&2 ; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C

function a_function {

FIRST_PARAM="$1"
SECOND_PARAM="$2"
THIRD_PARAM="$3"
fourth="$4"

echo DO_SOMETHING "$FIRST_PARAM" "$SECOND_PARAM" "$THIRD_PARAM" "$fourth"

}

pl " Current files f?:"
echo f?

export -f  a_function

START_HERE="/home/some_user/Documents"
VARIABLE_1="VALUE_1"
VARIABLE_2="VALUE_2"

pl " Results:"
# find $START_HERE"  -exec bash -c 'a_function "$0" ' {}  "$VARIABLE_1"   "$VARIABLE_2" \;
find .  -name 'f?' -exec bash -c "a_function $0 {}  $VARIABLE_1 $VARIABLE_2" \;

producing:
Code:
$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.9 (jessie) 
bash GNU bash 4.3.30

-----
 Current files f?:
f1 f2 f3

-----
 Results:
DO_SOMETHING ./s1 ./f1 VALUE_1 VALUE_2
DO_SOMETHING ./s1 ./f2 VALUE_1 VALUE_2
DO_SOMETHING ./s1 ./f3 VALUE_1 VALUE_2

I used local directory with only f* files for brevity.

Best wishes ... cheers, drl
This User Gave Thanks to drl For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

pass parameter back to calling program

Hi all, I am running AIX version 4. I have a shell script that is calling another script. I want the called script to obtain a value and pass it back to the calling script. So far, I know that to pass a parameter to a called script is as such: sh proc2.sh $1 $2 etc. What I don't know how... (11 Replies)
Discussion started by: jthomas
11 Replies

2. Shell Programming and Scripting

Passing a parameter while calling a script

Hello everyone I was asked to pass a parameter in the calling of a script. IŽll have two parameters London and Birmingham and IŽll need to pass this because each of these will have a specific script however with the same name. /home/script/loaddata.ksh Lond /home/script/loaddata.ksh Birm... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies

3. Shell Programming and Scripting

| with find -exec

can we use |(pipe operator) with find -exec.....? or can pipe the output of find command to another command...? if not, why...? pls explain (3 Replies)
Discussion started by: vijay_0209
3 Replies

4. Shell Programming and Scripting

Add additional numbers to file

I need to change the following field from: "7/3/2009 7:07:12 PM","12345676","ok","8674" "6/3/2009 8:07:12 PM","12345676","ok","8674" "5/1/2009 7:07:12 PM","12345676","ok","8674" "4/9/2009 3:07:12 AM","12345676","ok","8674" "3/8/2009 3:07:12 PM","12345676","ok","8674" "2/7/2009 4:07:12... (10 Replies)
Discussion started by: Pablo_beezo
10 Replies

5. UNIX for Dummies Questions & Answers

Find Exec

Hello All, Is there a way to make exec do a couple of operations on a single input from find? For example, find . -type d -exec ls -l "{}" ";" I would like to give the result of each "ls -l" in the above to a wc. Is that possible? I want to ls -l | wc -l inside... (1 Reply)
Discussion started by: prasanna1157
1 Replies

6. AIX

How to add/remove additional DNS and IP to AIX

Hello, How to add/remove additional DNS and IP to AIX ? I wanted to add 3 more new DNS and IP addresses to existing AIX 5.2. (1 Reply)
Discussion started by: balareddy
1 Replies

7. Shell Programming and Scripting

add a additional column in csv file

Thanks for allwoing me to discuss in this forum GIVEN BELOW A simple shell script which will ask for the user to input a PC name and it will produce the output in CSV with the PC name #! /bin/bash read -p "enter the PC name :" pc #checking for netstat report netstat -pant |sed '1,2d'... (1 Reply)
Discussion started by: ayyappancheta
1 Replies

8. Ubuntu

Find and EXEC

This is a huge issue. and I need it fixed ASAP. account-system gate-system race_traffic_sensor achievement-system global race_voicepack admin glue-system realdriveby admin-system gps realism-system... (5 Replies)
Discussion started by: austech360
5 Replies

9. Shell Programming and Scripting

find: missing argument to `-exec' while redirecting using find in perl

Hi Friends, Please help me to sort out this problem, I am running this in centos o/s and whenever I run this script I am getting "find: missing argument to `-exec' " but when I run the same code in the command line I didn't find any problem. I am using perl script to run this ... (2 Replies)
Discussion started by: ramkumarselvam
2 Replies

10. AIX

Add additional swap place on AIX server

Can anyone help me the detailed procedure and commands to follow to add additional swap on aix server . My system shows following as of now , #lsattr -E -l sys0 -a realmem realmem 13893632 Amount of usable physical memory in Kbytes False #pstat -s PAGE SPACE: USED PAGES FREE... (7 Replies)
Discussion started by: gull05
7 Replies
XDIFF_FILE_PATCH(3)							 1						       XDIFF_FILE_PATCH(3)

xdiff_file_patch - Patch a file with an unified diff

SYNOPSIS
mixed xdiff_file_patch (string $file, string $patch, string $dest, [int $flags = DIFF_PATCH_NORMAL]) DESCRIPTION
Patches a $file with a $patch and stores the result in a file. $patch has to be an unified diff created by xdiff_file_diff(3)/xdiff_string_diff(3) function. An optional $flags parameter specifies mode of operation. PARAMETERS
o $file - The original file. o $patch - The unified patch file. It has to be created using xdiff_string_diff(3), xdiff_file_diff(3) functions or compatible tools. o $dest - Path of the resulting file. o $flags - Can be either XDIFF_PATCH_NORMAL (default mode, normal patch) or XDIFF_PATCH_REVERSE (reversed patch). Starting from version 1.5.0, you can also use binary OR to enable XDIFF_PATCH_IGNORESPACE flag. RETURN VALUES
Returns FALSE if an internal error happened, string with rejected chunks if patch couldn't be applied or TRUE if patch has been success- fully applied. EXAMPLES
Example #1 xdiff_file_patch(3) example The following code applies unified diff to a file. <?php $old_version = 'my_script-1.0.php'; $patch = 'my_script.patch'; $errors = xdiff_file_patch($old_version, $patch, 'my_script-1.1.php'); if (is_string($errors)) { echo "Rejects: "; echo $errors; } ?> Example #2 Patch reversing example The following code reverses a patch. <?php $new_version = 'my_script-1.1.php'; $patch = 'my_script.patch'; $errors = xdiff_file_patch($new_version, $patch, 'my_script-1.0.php', XDIFF_PATCH_REVERSE); if (is_string($errors)) { echo "Rejects: "; echo $errors; } ?> SEE ALSO
xdiff_file_diff(3). PHP Documentation Group XDIFF_FILE_PATCH(3)
All times are GMT -4. The time now is 03:04 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy