Sponsored Content
Top Forums Shell Programming and Scripting Unable to print last line in Linux in while loop Post 303046147 by MadeInGermany on Saturday 25th of April 2020 09:40:27 AM
Old 04-25-2020
When read indicates an EOF and the loop ends, it still has read the last incomplete line into the variable.
So you can process it after the loop.
Code:
do_dirn(){
  echo "dirn :$dirn"
}
printf "terminated\nincomplete" |
while
  read -r dirn
do
  do_dirn
done
[ -n "$dirn" ] && do_dirn

This User Gave Thanks to MadeInGermany For This Post:
 

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
IO::Async::Socket(3pm)					User Contributed Perl Documentation				    IO::Async::Socket(3pm)

NAME
"IO::Async::Socket" - event callbacks and send buffering for a socket filehandle SYNOPSIS
use IO::Async::Socket; use IO::Async::Loop; my $loop = IO::Async::Loop->new; $loop->connect( host => "some.host.here", service => "echo", socktype => 'dgram', on_connected => sub { my ( $sock ) = @_; my $socket = IO::Async::Socket->new( handle => $sock, on_recv => sub { my ( $self, $dgram, $addr ) = @_; print "Received reply: $dgram ", $loop->stop; }, on_recv_error => sub { my ( $self, $errno ) = @_; die "Cannot recv - $errno "; }, ); $loop->add( $socket ); $socket->send( "A TEST DATAGRAM" ); }, on_resolve_error => sub { die "Cannot resolve - $_[0] "; }, on_connect_error => sub { die "Cannot connect "; }, ); $loop->run; DESCRIPTION
This subclass of IO::Async::Handle contains a socket filehandle. It provides a queue of outgoing data. It invokes the "on_recv" handler when new data is received from the filehandle. Data may be sent to the filehandle by calling the "send" method. It is primarily intended for "SOCK_data" or "SOCK_RAW" sockets; for "SOCK_STREAM" sockets an instance of IO::Async::Stream is probably more appropriate. EVENTS
The following events are invoked, either using subclass methods or CODE references in parameters: on_recv $data, $addr Invoke on receipt of a packet, datagram, or stream segment. The "on_recv" handler is invoked once for each packet, datagram, or stream segment that is received. It is passed the data itself, and the sender's address. on_recv_error $errno Optional. Invoked when the "recv" method on the receiving handle fails. on_send_error $errno Optional. Invoked when the "send" method on the sending handle fails. The "on_recv_error" and "on_send_error" handlers are passed the value of $! at the time the error occured. (The $! variable itself, by its nature, may have changed from the original error by the time this handler runs so it should always use the value passed in). If an error occurs when the corresponding error callback is not supplied, and there is not a subclass method for it, then the "close" method is called instead. on_outgoing_empty Optional. Invoked when the sending data buffer becomes empty. PARAMETERS
The following named parameters may be passed to "new" or "configure": read_handle => IO The IO handle to receive from. Must implement "fileno" and "recv" methods. write_handle => IO The IO handle to send to. Must implement "fileno" and "send" methods. handle => IO Shortcut to specifying the same IO handle for both of the above. on_recv => CODE on_recv_error => CODE on_outgoing_empty => CODE on_send_error => CODE autoflush => BOOL Optional. If true, the "send" method will atempt to send data to the operating system immediately, without waiting for the loop to indicate the filehandle is write-ready. recv_len => INT Optional. Sets the buffer size for "recv" calls. Defaults to 64 KiB. recv_all => BOOL Optional. If true, repeatedly call "recv" when the receiving handle first becomes read-ready. By default this is turned off, meaning at most one fixed-size buffer is received. If there is still more data in the kernel's buffer, the handle will stil be readable, and will be received from again. This behaviour allows multiple streams and sockets to be multiplexed simultaneously, meaning that a large bulk transfer on one cannot starve other filehandles of processing time. Turning this option on may improve bulk data transfer rate, at the risk of delaying or stalling processing on other filehandles. send_all => INT Optional. Analogous to the "recv_all" option, but for sending. When "autoflush" is enabled, this option only affects deferred sending if the initial attempt failed. The condition requiring an "on_recv" handler is checked at the time the object is added to a Loop; it is allowed to create a "IO::Async::Socket" object with a read handle but without a "on_recv" handler, provided that one is later given using "configure" before the stream is added to its containing Loop, either directly or by being a child of another Notifier already in a Loop, or added to one. METHODS
$socket->send( $data, $flags, $addr ) This method adds a segment of data to be sent, or sends it immediately, according to the "autoflush" parameter. $flags and $addr are optional. If the "autoflush" option is set, this method will try immediately to send the data to the underlying filehandle, optionally using the given flags and destination address. If this completes successfully then it will have been sent by the time this method returns. If it fails to send, then the data is queued as if "autoflush" were not set, and will be flushed as normal. SEE ALSO
o IO::Handle - Supply object methods for I/O handles AUTHOR
Paul Evans <leonerd@leonerd.org.uk> perl v5.14.2 2012-10-24 IO::Async::Socket(3pm)
All times are GMT -4. The time now is 10:59 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy