Function needs to be called based on its first character in a supplied string


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Function needs to be called based on its first character in a supplied string
# 1  
Old 07-24-2019
Function needs to be called based on its first character in a supplied string

Hi All,

I want to write a bash script in which a function needs to be called based on its first character in a supplied string. eg function "j" should be called when "jab" or "jgh" or "j" .... etc is hit. I have used complete -F in below script, however here function is invoked only when "j" is hit. Can any one help me in improving this script?



Code:
function j {
   ....
}

function m {
   ....
}

shopt   -s progcomp
complete  -F    _comp  j
complete  -F    _comp  m



thanks.
# 2  
Old 07-24-2019
Hi,

Assuming you're using Bash as your shell, this is the ideal situation for the case statement. Consider the following example:

Code:
$ cat data.txt
Jog
mog
cat
dog
jug
Man
$ cat script.sh
#!/bin/bash

function j
{
        echo "Function J has been called with the following parameter: $1"
        return
}

function m
{
        echo "Function M has been called with the following parameter: $1"
        return
}

while read parameter
do
        echo "Considering parameter "$parameter"..."

        case "$parameter" in
                J*|j*)
                        j "$parameter"
                        ;;
                M*|m*)
                        m "$parameter"
                        ;;
        esac
done < data.txt

$ ./script.sh
Considering parameter Jog...
Function J has been called with the following parameter: Jog
Considering parameter mog...
Function M has been called with the following parameter: mog
Considering parameter cat...
Considering parameter dog...
Considering parameter jug...
Function J has been called with the following parameter: jug
Considering parameter Man...
Function M has been called with the following parameter: Man
$

Here the script reads all the parameters one at a time from the file data.txt, and if they start with a lower- or upper-case J or M the appropriate function is called. If the parameter under consideration starts with any other character whatsoever, no function is called, and the script moves right on to the next parameter in the file, continuing in this manner until it reaches the end.

Hope this helps !
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk call in bash function called with arugments not working, something lost in translation?

Hello, I have this awk code in a bash script to perform a find and replace task. This finds one unique line in a file and substitutes the found line with a replacement. #! /bin/bash # value determined elsewhere total_outputs_p1=100 # file being modified... (5 Replies)
Discussion started by: LMHmedchem
5 Replies

2. Shell Programming and Scripting

Function getting called recursively

I have the below script which creates a directory or simply terminates without throwing error (exit 1) incase the directory exists. bash-4.1$ vi mdir.sh #!/bin/bash -e shopt -s expand_aliases alias mkdir=mkdir_s mkdir_s(){ if ]; then echo " directory EXISTS " return else echo "... (3 Replies)
Discussion started by: mohtashims
3 Replies

3. Shell Programming and Scripting

Add string based on character length

Good day, I am a newbie here and thanks for accepting me I have a task to modify input data where my input data looks like 123|34567|CHINE 1|23|INDIA 34512|21|USA 104|901|INDIASee that my input has two columns with different character length but max length is 5 and minimum length is 0 which... (1 Reply)
Discussion started by: fastlearner
1 Replies

4. UNIX for Dummies Questions & Answers

shell program- how many times a function is called

We have a program source C and is required to indicate how many times each function is called from the C program. also print the line number where there is a call. I've tried something like this: #!/bin/sh for i in $*;do if ! then echo $i is not a C file. else echo $i... (0 Replies)
Discussion started by: oana06
0 Replies

5. UNIX for Advanced & Expert Users

Function not called when no arguments is passed

Hi Guys, I am trying to pass arguments to the script i am wrinting. When no argument is passed or wrong argument is passed, the script needs to output the way it needs to be called and exit. Currently, when no arguments is passed, it is not getting exited but goes on assuming those... (3 Replies)
Discussion started by: mac4rfree
3 Replies

6. Shell Programming and Scripting

Return a value from called function to the calling function

I have two scripts. script1.sh looks -------------------------------- #!/bin/bash display() { echo "Welcome to Unix" } display ----------------------------- Script2.sh #!/bin/bash sh script1.sh //simply calling script1.sh ------------------------------ (1 Reply)
Discussion started by: mvictorvijayan
1 Replies

7. Shell Programming and Scripting

exit from case - called in a function

Hello Experts, I am building a shell where I need to use case structure. The structure is in a function as in the sample code below: # Shell mySh #!/bin/sh doThis(){ var=$1 case "$var" in IT) echo "ok 1 $var" ;; ... (7 Replies)
Discussion started by: hkansal
7 Replies

8. UNIX for Dummies Questions & Answers

Cutting a string based on the third occcurence of a character

Hello, I am new to unix hence struggling with my requirement. I have a string like : ECR/CHQ/GBP/12345.out I need to get only the ECR/CHQ/GBP portion of the string(cut the string based on the third occurrence of / )...How do it do it? Many thanks (3 Replies)
Discussion started by: valluvan
3 Replies

9. Shell Programming and Scripting

Passing global variable to a function which is called by another function

Hi , I have three funcions f1, f2 and f3 . f1 calls f2 and f2 calls f3 . I have a global variable "period" which i want to pass to f3 . Can i pass the variable directly in the definition of f3 ? Pls help . sars (4 Replies)
Discussion started by: sars
4 Replies

10. Programming

How to get exit value of an executable that gets called from function?

How to get exit value of an executable that gets called from function? I have an executable called “myexec” which returns 0 on success and different values for different fail scenarios. I need to call this (myexec) executable from “myprog()” function of other executable and get the exit value... (1 Reply)
Discussion started by: sureshreddi_ps
1 Replies
Login or Register to Ask a Question