Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Variable gets auto updated after function execution Post 303036761 by MadeInGermany on Wednesday 10th of July 2019 03:38:44 PM
Old 07-10-2019
grep -q might not work with all grep versions. What is your OS?
Code:
tail -f $UMPath/data/nirvana.log | while read line
do
done

Several problems with that.
The pipe forces the while-do-done block into a sub shell.
  • While the return should work an exit can produces different results, dependent on the shell. BTW what shell and OS do you use?
  • Your main problem: changes on variables are not copied back to the main shell.

Then, if the sub shell terminates, it sends a SIGPIPE to the tail -f that hopefully terminates.
The following eliminates some problems
Code:
# Watch the log file for the initialization string
getline()
{
# use the portable printf in favor of echo -e
printf "\nNow watching nirvana log for the Started Nirvana Realm string"
# tail -f will hopefully terminate
tail -f $UMPath/data/nirvana.log |
# the pipe forces the while-do-done into a sub shell:
# variables are not returned but a return value should work
while read line
do
    case "$line" in
    *"Realm Server Startup sequence completed"*)
        printf "\nFound: %s\n\n" "$line"
        return 0
    ;;
    *"Server shutdown"*)
        printf "\nFound: %\n\n" "$line"
        return 1
    ;;
    esac
done
}
# act on the return value
if getline
then
    echo "UM is now up and running"
else
    echo "UM failed to start. Please check"
    rval=1
fi
exit $rval

 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

passing a variable inside a variable to a function

I would like to know how to pass a variable inside a variable to a function. sample code below -------------- for x in 1 9 do check_null $C$x ##call function to check if the value is null if then echo "line number:$var_cnt,... (2 Replies)
Discussion started by: KingVikram
2 Replies

2. 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

3. Shell Programming and Scripting

How to pass a function with a variable parameter into another variable?

Hello again :) Am currently trying to write a function which will delete a record from a file. The code currently looks as such: function deleteRecord() { clear read -p "Please enter the ID of the record you wish to remove: " strID ... (2 Replies)
Discussion started by: U_C_Dispatj
2 Replies

4. Programming

pthread question : global variable not updated

Hi, I wrote the following program to understand mutexes. If I run the program , number of threads is shown as zero, even after creating one thread. When running with gdb, it works fine. The function process is used to update global variable (used to keep track of threads). It looks like the... (2 Replies)
Discussion started by: sanjayc
2 Replies

5. UNIX for Dummies Questions & Answers

Auto Complete variable names in KSH

Hi, I use KSH a lot. I wanted to know if I can auto-complete a Variable name in the environment. I know this is possible in tcsh. I use the vi mode to edit commands on command prompt. Any help would be much appreciated. Thanks..!! (4 Replies)
Discussion started by: grep_me
4 Replies

6. Shell Programming and Scripting

Function command execution from root

I have a function hello, that is echoing i have put that function in .bash1 file then recalling the function with same user but with su command but it is not working. username -> test function -> below function save in .bash1 function hello() { echo "Hello, $1!" } export -f hello I... (2 Replies)
Discussion started by: learnbash
2 Replies

7. Shell Programming and Scripting

Sequential Function Execution

I am having two different function in my script. When control is at first function I do not want to execute another function. How I can do that? Help is highly appreiated as I am not sure How I can do it in Unix? Thanks, Vikram. (2 Replies)
Discussion started by: VSom007
2 Replies

8. Shell Programming and Scripting

Passing variable value in a function to be used by another function

Hello All, I would like to ask help from you on how to pass variable value from a function that has been called inside the function. I have created below and put the variables in " ". Is there another way I can do this? Thank you in advance. readtasklist() { while read -r mod ver... (1 Reply)
Discussion started by: aderamos12
1 Replies

9. Shell Programming and Scripting

How to pass variable from one function to another function?

updateEnvironmentField() { linewithoutquotes=`echo $LINE | tr -d '"'` b() } I want to pass variable named $linewithoutquotes to another method called b(), which is called from updateEnvironmentField() method. How to do the above requirement with shell script (1 Reply)
Discussion started by: pottic
1 Replies

10. Shell Programming and Scripting

[bash] why my variable is not updated?

Does anyone know why the below script is not working? Why is not the variable tot_files updated? location=$1 cd "$location" tot_files=0 ( echo "" # recursively gets the total number of files tot_files=$(for t in files ; do echo `find . -type ${t:0:1} | wc -l` $t | cut -f1... (12 Replies)
Discussion started by: soichiro
12 Replies
BUILTIN(1)						    BSD General Commands Manual 						BUILTIN(1)

NAME
builtin, !, %, ., :, @, [, {, }, alias, alloc, bg, bind, bindkey, break, breaksw, builtins, case, cd, chdir, command, complete, continue, default, dirs, do, done, echo, echotc, elif, else, end, endif, endsw, esac, eval, exec, exit, export, false, fc, fg, filetest, fi, for, foreach, getopts, glob, goto, hash, hashstat, history, hup, if, jobid, jobs, kill, limit, local, log, login, logout, ls-F, nice, nohup, notify, onintr, popd, printenv, printf, pushd, pwd, read, readonly, rehash, repeat, return, sched, set, setenv, settc, setty, setvar, shift, source, stop, suspend, switch, telltc, test, then, time, times, trap, true, type, ulimit, umask, unalias, uncomplete, unhash, unlimit, unset, unsetenv, until, wait, where, which, while -- shell built-in commands SYNOPSIS
See the built-in command description in the appropriate shell manual page. DESCRIPTION
Shell builtin commands are commands that can be executed within the running shell's process. Note that, in the case of csh(1) builtin com- mands, the command is executed in a subshell if it occurs as any component of a pipeline except the last. If a command specified to the shell contains a slash '/', the shell will not execute a builtin command, even if the last component of the specified command matches the name of a builtin command. Thus, while specifying ``echo'' causes a builtin command to be executed under shells that support the echo builtin command, specifying ``/bin/echo'' or ``./echo'' does not. While some builtin commands may exist in more than one shell, their operation may be different under each shell which supports them. Below is a table which lists shell builtin commands, the standard shells that support them and whether they exist as standalone utilities. Only builtin commands for the csh(1) and sh(1) shells are listed here. Consult a shell's manual page for details on the operation its builtin commands. Beware that the sh(1) manual page, at least, calls some of these commands ``built-in commands'' and some of them ``reserved words''. Users of other shells may need to consult an info(1) page or other sources of documentation. Commands marked ``No**'' under External do exist externally, but are implemented as scripts using a builtin command of the same name. Command External csh(1) sh(1) ! No No Yes % No Yes No . No No Yes : No Yes Yes @ No Yes No [ Yes No Yes { No No Yes } No No Yes alias No** Yes Yes alloc No Yes No bg No** Yes Yes bind No No Yes bindkey No Yes No break No Yes Yes breaksw No Yes No builtin No No Yes builtins No Yes No case No Yes Yes cd No** Yes Yes chdir No Yes Yes command No** No Yes complete No Yes No continue No Yes Yes default No Yes No dirs No Yes No do No No Yes done No No Yes echo Yes Yes Yes echotc No Yes No elif No No Yes else No Yes Yes end No Yes No endif No Yes No endsw No Yes No esac No No Yes eval No Yes Yes exec No Yes Yes exit No Yes Yes export No No Yes false Yes No Yes fc No** No Yes fg No** Yes Yes filetest No Yes No fi No No Yes for No No Yes foreach No Yes No getopts No** No Yes glob No Yes No goto No Yes No hash No** No Yes hashstat No Yes No history No Yes No hup No Yes No if No Yes Yes jobid No No Yes jobs No** Yes Yes kill Yes Yes Yes limit No Yes No local No No Yes log No Yes No login Yes Yes No logout No Yes No ls-F No Yes No nice Yes Yes No nohup Yes Yes No notify No Yes No onintr No Yes No popd No Yes No printenv Yes Yes No printf Yes No Yes pushd No Yes No pwd Yes No Yes read No** No Yes readonly No No Yes rehash No Yes No repeat No Yes No return No No Yes sched No Yes No set No Yes Yes setenv No Yes No settc No Yes No setty No Yes No setvar No No Yes shift No Yes Yes source No Yes No stop No Yes No suspend No Yes No switch No Yes No telltc No Yes No test Yes No Yes then No No Yes time Yes Yes No times No No Yes trap No No Yes true Yes No Yes type No** No Yes ulimit No** No Yes umask No** Yes Yes unalias No** Yes Yes uncomplete No Yes No unhash No Yes No unlimit No Yes No unset No Yes Yes unsetenv No Yes No until No No Yes wait No** Yes Yes where No Yes No which Yes Yes No while No Yes Yes SEE ALSO
csh(1), echo(1), false(1), info(1), kill(1), login(1), nice(1), nohup(1), printenv(1), printf(1), pwd(1), sh(1), test(1), time(1), true(1), which(1) HISTORY
The builtin manual page first appeared in FreeBSD 3.4. AUTHORS
This manual page was written by Sheldon Hearn <sheldonh@FreeBSD.org>. BSD
December 21, 2010 BSD
All times are GMT -4. The time now is 07:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy