Visit Our UNIX and Linux User Community


Idea to make a function as microservice


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Idea to make a function as microservice
# 1  
Old 07-22-2019
Idea to make a function as microservice

Hello -

I wrote few scripts on bash shell script and grafana triggers those scripts and show on console .

I want to write the console output to a log file as well by using tee command and I am successful as well . I am wondering Instead of writing same logic on multiple scripts , why should I write a microservice ( create another script) and pass the tee output to the new service .

I am stucked with two qns
1. How can i send the tee output to another shell script and the function inside it ?
2. what need to mentioned on the function inside new service?
# 2  
Old 07-23-2019
You could source the script with the function in it, perhaps that is what you need.
Code:
$ cat my_function_script.sh
function welcome () {
   echo "Hello there"
}

$ cat my_call_script.sh
source ./my_function_script.sh
echo "Get ready for a greeting ....."
welcome
echo "I hope you liked your greeting"
echo

$ ./my_call_script.sh
Get ready for a greeting .....
Hello there
I hope you liked your greeting

$

Does that do the sort of thing you need? You may also see the shortcut of . instead of source but it;'s a little less clear and more difficult to search for. You would end up with a line like . ./my_function_script.sh

Either way, the script being sourced is executed in the current shell so the declared functions remain available. You have to be careful that you really want to run it, so most people have a block on functions only in what they source in.




I hope that this helps,
Robin

Last edited by rbatte1; 07-23-2019 at 08:30 AM.. Reason: Managed to double-up CODE tags
# 3  
Old 07-23-2019
Hello Robin ,

Thanks for sharing the idea. I had this Idea and using it , but what I am not sure is

1. consider I have a logging script as you mentioned , which will have logic to post to a log file .
2. Now , how will I call that script ? I will source it thought . Lets look this example -

Code:
echo -n -e  "OS Architecture : "$(arch | grep x86_64 &> /dev/null)| tee -a "$FinalLogName"  && echo -e  " 64 Bit OS\n" | tee -a "$FinalLogName" || echo -e  " 32 Bit OS" | tee -a "$FinalLogName"

In this if you see , I am posting to console as well as with tee , sending to a logfile as well . How can i convert this , can u help me ?
# 4  
Old 07-25-2019
I'm not sure on your question, but your code is a little confusing with all the quotes and the sub-process in $(...). I think that the decision for true && is based on the output of the echo -n -e "OS Archi..... statement rather thatn the result of the sub-process.

I think you are trying to make a decision based on the output of arch | grep .... so perhaps the following would be more suitable:-
Code:
[ "$(arch)" = "x86_64" ]  && myarch="64 Bit" || myarch="32 Bit"
echo "OS Architecture : ${myarch}" | tee -a "${FinalLogName}"

There will be other perhaps neater ways to do this, but this is more explicit to me; make the decision and set your message then have one output statement to show the whole thing (copied to the log)



Does that help, or have I missed the point entirely?




Kind regards,
Robin.

Last edited by rbatte1; 07-25-2019 at 08:18 AM.. Reason: Missed a closing quote and added braces round variable name
# 5  
Old 07-25-2019
From what I see - I doubt I ifully understand what you're after - a "group command" and "process substitution" (both man bash) might do what you need:


Code:
{ command && echo "good" || echo "bad"; } | tee -a somelogfile > >(yourevaluatescript)


Previous Thread | Next Thread
Test Your Knowledge in Computers #402
Difficulty: Medium
The term 3D printing originally referred to a powder bed process employing standard and custom inkjet print heads.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Function - Make your function return an exit status

Hi All, Good Day, seeking for your assistance on how to not perform my 2nd, 3rd,4th etc.. function if my 1st function is in else condition. #Body function1() { if then echo "exist" else echo "not exist" } #if not exist in function1 my all other function will not proceed.... (4 Replies)
Discussion started by: meister29
4 Replies

2. Shell Programming and Scripting

How to make nested function local?

Hi, If I declare a function inside another function, it overwrites any previously declared function with the same name. This is NOT what I want. Example: #!/bin/bash _test() { echo test; } _myf() { # I'm using the same name as the other function. _test() { echo local test; }... (8 Replies)
Discussion started by: chebarbudo
8 Replies

3. Programming

Make sure strtok_r() function

Hello, I was trying to understand more on strtok_r() function with following code: #include <stdio.h> #include <stdlib.h> #include <string.h> /* *From http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=strtok_r A FreeBSD man pages * */ int main() { char string1; char *sep =... (8 Replies)
Discussion started by: yifangt
8 Replies

4. Shell Programming and Scripting

Is it possible make the shell read functions 1 by 1 and calling an other function?

Greetings, I m wondering if it's possible do do the following : I have a simple function called "FindMoveDelete" which does the following : FindMoveDelete() { find . -iname "$FILENAME*.ext" -exec mv {} "$PATH/$VAR" \; && find . -maxdepth 1 -type d -iname "$FILENAME*" -exec rm -rf {}... (6 Replies)
Discussion started by: Sekullos
6 Replies

5. UNIX for Dummies Questions & Answers

make - foreach function

I wrote the following Makefile: dirs := a b c d files := $(foreach dir,$(dirs),$(wildcard $(dir)/*)) .PHONY: all all: touch $(files) The first two lines are taken from GNU make tutorial, Section 8.5 The foreach Function. I would expect the recipe touch $(files) to be... (2 Replies)
Discussion started by: ybelenky
2 Replies

6. Shell Programming and Scripting

An curious idea, how to make it by the powerful script?

I use a simple script to do some quantum calculations with gaussian package. the script as follows #!/bin/sh #put a gaussian input file into a new folder in the same name #and submit this new job for i in *.gjf do FN=$( echo $i | sed 's/.gjf//') mkdir $FN mv... (1 Reply)
Discussion started by: liuzhencc
1 Replies

7. Programming

How to make a function friend to both base and derived class

Hi, I have a base class and derived a class from the base class, i want to print & read the data for the object created for the derived class,so i have overloaded both the << and >> operators and also have done the foward declaration. Below is the code snippet, #include <iostream> class... (3 Replies)
Discussion started by: ennstate
3 Replies

8. Shell Programming and Scripting

How to make variables in script function local?

Is it possible to make function variables local? I mean for example, I have a script variable 'name' and in function I have declared variable 'name' I need to have script's 'name' have the same value as it was before calling the function with the same declaration. The way to preserve a... (5 Replies)
Discussion started by: alex_5161
5 Replies

9. Shell Programming and Scripting

Limitations of awk? Good idea? Bad idea?

Keeping in mind that I'm relatively comfortable with programming in general but very new to unix and korn/bourne shell scripts.. I'm using awk on a CSV file, and then performing calculations and operations on specific fields within specific records. The CSV file I'm working with has about 600... (2 Replies)
Discussion started by: yongho
2 Replies

Featured Tech Videos