Sponsored Content
Top Forums Shell Programming and Scripting Unable to print last line in Linux in while loop Post 303046318 by rbatte1 on Thursday 30th of April 2020 03:37:14 PM
Old 04-30-2020
Would you not be better re-writing the loop to have the loop read the data in rather than have it piped to? That might sound confusingly similar, but some shells will start a sub-process when you add a pipe into it. That might mean that the loop is actually in a sub-process and the scoping of variables may not be what you expect. Of course it might just be that your printf statement doesn't have a new-line after the last item.

Could you consider something like the following instead:-
Code:
while read variable
do
   echo "I got variable ${variable}"
done < <(printf "item1\nitem2\nthird item\last\n")

This runs the process to generate the input in a subshell and your loop runs in the current process so that values might be more what you expect.



I hope that this helps,
Robin
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

loop? print max column in each line for 800 files and merge

Hello, I have 800 or so files with 3 columns each and >10000 lines each. For each file and each line I would like to print the maximum column number for each line. Then I would like to 'paste' each of these files together (column-wise) so that the file with expression in label '_1' is the... (6 Replies)
Discussion started by: peanuts48
6 Replies

2. Shell Programming and Scripting

Unable to Print Count

Hi All, I am performing addition of two inetger variables which assigning output to a new variable getting following error. Check1.sh #!/bin/ksh filesrc=/usr/kk/Source1.txt filetgt=/usr/kk/Source2.txt FINAL_COUNTS= `awk '{n++} END {printf "%012d\n",n}' ${filesrc} ${filetgt}`... (3 Replies)
Discussion started by: kmsekhar
3 Replies

3. Shell Programming and Scripting

Unable to print dynamic arguments in for loop

Hi All, I want to pass few dynamic arguments to shell script. The number of arguments differ each time I call the script. I want to print the arguments using the for loop as below. But not working out. for (( i=1; i<=$#; i++ )) do echo $"($i)" done /bin/sh test.sh arg1 arg2 arg3 ... (1 Reply)
Discussion started by: laalesh
1 Replies

4. Shell Programming and Scripting

Print in New line in loop

Hi , i want to print the output in line by line while read LINE do echo $LINE | grep UCM | egrep '(Shutdown|Unavailable)' echo $LINE | grep SRBr | egrep '(Shutdown|Unavailable)' echo $LINE | grep SRP| egrep '(Shutdown|Unavailable)' echo $LINE | grep OM | grep JMS|... (7 Replies)
Discussion started by: navsan
7 Replies

5. Shell Programming and Scripting

Print awk output in same line ,For loop

My code is something like below. #/bin/bash for i in `ps -ef | grep pmon | grep -v bash | grep -v grep | grep -v perl | grep -v asm | grep -v MGMT|awk '{print $1" "$8}'` do echo $i ORACLE_SID=`echo $line | awk '{print $2}'` USERNAME=`echo $line | awk '{print $1}'` done ============= But... (3 Replies)
Discussion started by: tapia
3 Replies

6. Shell Programming and Scripting

Print loop output on same line dynamically

Hi, I am trying to print copy percentage completion dynamically by using the script below, #!/bin/bash dest_size=0 orig_size=`du -sk $sourcefile | awk '{print $1}'` while ; do dest_size=`du -sk $destfile | awk '{print $1}'` coyp_percentage=`echo "scale=2; $dest_size*100/$orig_size"... (4 Replies)
Discussion started by: Sumanthsv
4 Replies

7. UNIX for Beginners Questions & Answers

Loop through directory and print on line

In the bash below I am trying to loop through all the R1.gz in a directory (always 1), store them in ARRAY, and cut them before the second _. That is being done but I can't seem to print then one a single line seperated by a space. Is the below the best way or is there a better solution? Thank you... (3 Replies)
Discussion started by: cmccabe
3 Replies

8. Shell Programming and Scripting

Unable to print python array in shell script loop.

I am unable to loop print a python string array in my unix shell script: ~/readarr.sh '{{ myarr }}' more readarr.sh echo "Parameter 1:"$1 MYARRAY= $1 IFS= MYARRAY=`python <<< "print ' '.join($MYARRAY)"` for a in "$MYARRAY"; do echo "Printing Array: $a" done Can you... (10 Replies)
Discussion started by: mohtashims
10 Replies

9. Shell Programming and Scripting

Echo print on same line while loop using variable

Currently using below script but echo it print the output in two line. Input file all-vm-final-2.txt CEALA08893 SDDC_SCUN DS_SIO_Workload_SAPUI_UAT_01 4 CEALA09546 SDDC_SCUN DS-SIO-PD5_Workload_UAT_SP1_Flash_07 4 CEALA09702 SDDC_SCUN DS-VSAN-RMP-WORKLOAD01 4 DEALA08762 SDDC_LDC... (3 Replies)
Discussion started by: ranjancom2000
3 Replies
WMANAGER-LOOP(1)					    BSD General Commands Manual 					  WMANAGER-LOOP(1)

NAME
wmanager-loop -- loop running window managers chosen with wmanager SYNOPSIS
wmanager-loop [OPTIONS ...] DESCRIPTION
The wmanager-loop program starts either the window manager specified by the WM variable or the first window manager listed in ~/.wmanagerrc (or an X terminal emulator if none), and when it exits, runs wmanager(1) to prompt the user for the next window manager. It loops doing this until the user chooses ``Exit this session'' in wmanager(1). Any options given to wmanager-loop will be passed on to wmanager(1). If the WM environment variable is set, the wmanager-loop program tries to interpret it as a window manager specification in the following ways in the specified order: o a full path to an executable file to run as the window manager; o the name of a window manager listed in the /.wmanagerrc file; e.g. ``fluxbox'' would match the following line: fluxbox=/usr/bin/startfluxbox o the program name of a window manager listed in the /.wmanagerrc file; e.g. ``startfluxbox'' would match the above example. o the start of such a program name; e.g. ``start'' would match the above example. o the end of such a program name; e.g. ``box'' would match the above example. If the WM variable is set and there is more than one line in ~/.wmanagerrc that matches the specification, wmanager-loop will exit with an error message. As mentioned above, if no window manager is specified in the WM environment variable or found in the ~/.wmanagerrc file, the wmanager-loop program attempts to start an X terminal emulator. If the WMTERM environment variable is set, the wmanager-loop program uses it as the path to the emulator. Otherwise it searches the user's path for a program named ``x-terminal-emulator'', ``urxvt'', ``rxvt'', or ``xterm'' in this order, and starts the first one found using its full path. If none of the common terminal emulators on the above list is found, the wmanager-loop program just runs ``xterm'' in the hope that something will come up on the user's display. ENVIRONMENT
The wmanager-loop program uses the following environment variables: WM The name, path, or partial path to the first window manager to execute. WMTERM The name of the X terminal emulator to execute if no window manager could be found in the ~/.wmanagerrc file. If not specified, the wmanager-loop program searches the user's path as described above. EXAMPLE
To start using wmanager-loop, create a ~/.wmanagerrc file - generally with wmanagerrc-update(1) - and add something like the following at the end of your ~/.xsession file: exec wmanager-loop -geometry +570+585 SEE ALSO
wmanager(1), wmanagerrc-update(1) HISTORY
The wmanager-loop program was written by Tommi Virtanen in 2000 and later modified by Peter Pentchev. This manual page was originally writ- ten in perldoc format by Tommi Virtanen in 2000, and converted to mdoc format and updated by Peter Pentchev in 2008. AUTHORS
Tommi Virtanen <tv@debian.org> Peter Pentchev <roam@ringlet.net> BSD
September 8, 2009 BSD
All times are GMT -4. The time now is 07:27 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy