Idea to make a function as microservice


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
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  
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 07:30 AM.. Reason: Managed to double-up CODE tags
# 3  
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  
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 07:18 AM.. Reason: Missed a closing quote and added braces round variable name
# 5  
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)

Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Science: Computers
Difficulty: Easy
The NVidia GTX 1080 gets its name because it can only render at a 1920x1080 screen resolution.
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