Sponsored Content
Full Discussion: Shell Variable visibility
Top Forums Shell Programming and Scripting Shell Variable visibility Post 302989510 by dae on Friday 13th of January 2017 10:47:57 AM
Old 01-13-2017
Shell Variable visibility

Dear All,

Saying, I have two distinct functions with the same goal (counting lines containing a specific pattern in a file MyFile).

To perform that operation, I used a "while loop" with two different syntax ("grep" command would be much more better in that case but this is not the concern in our case) !:
(1) cat MyFile | while read -r line;do; ... ;done;

(2) while read -r line; do; ...;done < MyFile;
Inside the while loop, I used a variable var to store the result.

My questions:

(1) is that the expected behaviour to not be able to get the value of var outside the while for the first syntax ?
(2) what kind of system's difference between both syntax ?

Thanks a lot for your attention, Smilie

cf. examples below:

Code:
[x004191a@xsnl11p317a log]$ echo $SHELL
/bin/bash
[x004191a@xsnl11p317a log]$ fnct_dae_V1 ()
> {
>
>   var=0
>
>   cat "STG_INSTNCE_COMPLTED_01_451_20170112193018.log" | while read -r line
>   do
>
>     if [[ $(echo "$line" | grep -i 'completed') ]]
>     then
>
>       ((var++))
>
>     echo "- INSIDE WHILE:var:$var"
>
>     fi
>
>   done
>
>   echo "- OUTSIDE WHILE:var:$var"
>
> }
[x004191a@xsnl11p317a log]$ fnct_dae_V1
- INSIDE WHILE:var:1
- INSIDE WHILE:var:2
- INSIDE WHILE:var:3
- INSIDE WHILE:var:4
- OUTSIDE WHILE:var:0
[x004191a@xsnl11p317a log]$
[x004191a@xsnl11p317a log]$
[x004191a@xsnl11p317a log]$
[x004191a@xsnl11p317a log]$
[x004191a@xsnl11p317a log]$ fnct_dae_V2 ()
> {
>
>   var=0
>
>   while read -r line
>
>   do
>
>     if [[ $(echo "$line" | grep -i 'completed') ]]
>     then
>
>       ((var++))
>
>     echo "- INSIDE WHILE:var:$var"
>
>     fi
>
>   done < STG_INSTNCE_COMPLTED_01_451_20170112193018.log
>
>   echo "- OUTSIDE WHILE:var:$var"
>
> }
[x004191a@xsnl11p317a log]$ fnct_dae_V2
- INSIDE WHILE:var:1
- INSIDE WHILE:var:2
- INSIDE WHILE:var:3
- INSIDE WHILE:var:4
- OUTSIDE WHILE:var:4
[x004191a@xsnl11p317a log]$

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

set variable with another variable? c shell

okay, this shouldn't be difficult but I can't figure it out. How can I set a variable with another variable. I have the following: foreach pe ($dir $sp) set tpe = `echo $pe | grep M` if ($tpe == M) then set ${$pe} = M <--- This doesn't work else endif end In this case what... (2 Replies)
Discussion started by: wxornot
2 Replies

2. Shell Programming and Scripting

Enviornment Variable in B shell (I call it nested variable)

#!/bin/sh APP_ROOT_MODE1=/opt/app1.0 APP_ROOT_MODE2=/opt/app2.0 APP_ROOT=${APP_ROOT_${APP_MODE}} # enviornment variable APP_MODE will be exported in the terminal where # we run the applciation, its value is string - MODE1 or MODE2 # My intension is: # when export APP_MODE=MODE1... (4 Replies)
Discussion started by: princelinux
4 Replies

3. Shell Programming and Scripting

visibility of a variable in Perl script.

I am writing a script to cross check the dbscript. For that I am searching the SQL manipulators in the dbscript as shown below. But my problem is the variable $pattern is coming as null when comes out of the foreach loop. File content: ========= vi /home2/niroj_p/dbscript.sql -------... (1 Reply)
Discussion started by: Niroj
1 Replies

4. Shell Programming and Scripting

assign awk's variable to shell script's variable?

Dear All, we have a command output which looks like : Total 200 queues in 30000 Kbytes and we're going to get "200" and "30000" for further process. currently, i'm using : numA=echo $OUTPUT | awk '{print $2}' numB=echo $OUTPUT | awk '{print $5}' my question is : can I use just one... (4 Replies)
Discussion started by: tiger2000
4 Replies

5. Shell Programming and Scripting

Shell assign variable to another variable

How can I assign a variable to an variable. IE $car=honda One way I can do it is export $car=honda or let $car=2323 Is there any other ways to preform this task (3 Replies)
Discussion started by: 3junior
3 Replies

6. Shell Programming and Scripting

Not able to store command inside a shell variable, and run the variable

Hi, I am trying to do the following thing var='date' $var Above command substitutes date for and in turn runs the date command and i am getting the todays date value. I am trying to do the same thing as following, but facing some problems, unique_host_pro="sed -e ' /#/d'... (3 Replies)
Discussion started by: gvinayagam
3 Replies

7. Shell Programming and Scripting

[SHELL: /bin/sh] For loop using variable variable names

Simple enough problem I think, I just can't seem to get it right. The below doesn't work as intended, it's just a function defined in a much larger script: CheckValues() { for field in \ Group_ID \ Group_Title \ Rule_ID \ Rule_Severity \ ... (2 Replies)
Discussion started by: Vryali
2 Replies

8. Shell Programming and Scripting

Script to convert csv file to html with good visibility

Hi, I have Below script which converts csv file to html succesfully.but the visiblity is simple in black n white. I want to have better visibilty of each columns in different colours(like green).As it is a Database report suppose some tablespace available space is less than 20% then it should... (7 Replies)
Discussion started by: sv0081493
7 Replies

9. Programming

Visibility of X11 windows

Does anyone know if it is possible to check whether a window in x11 (using xlib) is visible or not? I tried XGetWindowProperty, but that doesn't work, because the windows host (dtwm on Solaris 10) does not support EWMH. (5 Replies)
Discussion started by: JenniferKuiper
5 Replies

10. UNIX for Beginners Questions & Answers

How can I assign awk's variable to shell script's variable?

I have the following script, and I want to assign the output ($10 and $5) from awk to N and L: grdinfo data.grd | awk '{print $10,$5}'| read N L output from gridinfo data.grd is: data.grd 50 100 41 82 -2796 6944 0.016 0.016 3001 2461. where N and L is suppose to be 3001 and 100. I use... (8 Replies)
Discussion started by: geomarine
8 Replies
pid(1T) 						       Tcl Built-In Commands							   pid(1T)

__________________________________________________________________________________________________________________________________________________

NAME
pid - Retrieve process identifiers SYNOPSIS
pid ?fileId? _________________________________________________________________ DESCRIPTION
If the fileId argument is given then it should normally refer to a process pipeline created with the open command. In this case the pid command will return a list whose elements are the process identifiers of all the processes in the pipeline, in order. The list will be empty if fileId refers to an open file that isn't a process pipeline. If no fileId argument is given then pid returns the process identi- fier of the current process. All process identifiers are returned as decimal strings. EXAMPLE
Print process information about the processes in a pipeline using the SysV ps program before reading the output of that pipeline: set pipeline [open "| zcat somefile.gz | grep foobar | sort -u"] # Print process information exec ps -fp [pid $pipeline] >@stdout # Print a separator and then the output of the pipeline puts [string repeat - 70] puts [read $pipeline] close $pipeline SEE ALSO
exec(1T), open(1T) KEYWORDS
file, pipeline, process identifier ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +--------------------+-----------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +--------------------+-----------------+ |Availability | SUNWTcl | +--------------------+-----------------+ |Interface Stability | Uncommitted | +--------------------+-----------------+ NOTES
Source for Tcl is available on http://opensolaris.org. Tcl 7.0 pid(1T)
All times are GMT -4. The time now is 01:00 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy