From owner-freebsd-hackers@freebsd.org Mon Oct 22 13:32:08 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3314EFFC104 for ; Mon, 22 Oct 2018 13:32:08 +0000 (UTC) (envelope-from yuripv@yuripv.net) Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C70CD7A0BD for ; Mon, 22 Oct 2018 13:32:07 +0000 (UTC) (envelope-from yuripv@yuripv.net) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id E3EC221F37; Mon, 22 Oct 2018 09:32:06 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 22 Oct 2018 09:32:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yuripv.net; h= subject:from:to:references:message-id:date:mime-version :in-reply-to:content-type:content-transfer-encoding; s=fm3; bh=u RykhZCap1Uzgc1T2YlrteIQ0lQCSJQvL6bPiGXB3sI=; b=S5xLajj3AszR70E5G CWaFQO4XvbSazW1RE19OZ7r0MQnvBdfQ8AkOpjVFeb4uj5xRwmPbILJ8roapaQ3i tNgMvQO96x/Dfz31xW39+OblgTHbxF0PFysLJTxZxXYl9a9t/deNzLOsLm36DRea oERwLiBQDLFONFFP/0533345podkZatC4yrPldjigkKL+6G4vFsqk/ARehctrBTj MoHQP1c5K3VyRNLVxoznRAunSUsMBKG942fa+Tr7ziBm3Kdufh55OG0jXlM9Xul/ a3fvLLQeev4rG3ZhMBqhIZqSKJcmY2bS05Vk03t1DmsjgmCxqtUkdVXG9zL2VX0h vncoQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=uRykhZCap1Uzgc1T2YlrteIQ0lQCSJQvL6bPiGXB3 sI=; b=WcdkAhkcrqZzkOD/kv/Utid/F+AI73UtugShwQkzpU9dmc03fV1/+dur3 KxyV1ZMUyxzrl/aWPWd+1iKiPsxR3Pw/ak7cHChaF1yGmsPOFBw2PqL1dwPksTE2 u7FaVcWadjK5vWDiDQ0iQSyJDPCIYc0zhMVPNL9xPxZeuHTFQZlAh+lMt/QBABgo gIzEWSLQIxhS0hB9MkAbr6HUkMKR3diRGdyO9wNwCdqJBhXXfAdkCfbO7XhN4eVp uf2oFkwlvsEuJ+K2y4J2E6HeunhZkQfkw/vpyH9658QFP8JBPwCIPiC7AGIc/zUa yQdrvV2LPcfDeuAkAp6e2Ch75aPmQ== X-ME-Sender: X-ME-Proxy: Received: from [192.168.1.2] (unknown [5.138.166.47]) by mail.messagingengine.com (Postfix) with ESMTPA id 646C0102E4; Mon, 22 Oct 2018 09:32:04 -0400 (EDT) Subject: Re: shell read built-in From: Yuri Pankov To: Eugene Grosbein , Freebsd hackers list References: <2fff355e-a729-d5d3-8199-f2bbba80c112@grosbein.net> <4ad1ea37-4714-a104-89a2-d7aef70d0f89@yuripv.net> Openpgp: preference=signencrypt Autocrypt: addr=yuripv@yuripv.net; keydata= xsBNBFu8u6IBCADB11gP0QwnorrHjqAtKLHKHNHskhy0s7jqJKfx0YqXgVBKGLJ9/mjLAz0F CBNvemHSDDTs0mEZ9cBKKi6cmsav6+UQgr//yai6hvXLBJqKchSFO4MhmdvBtsGFq1yKz5Zi uhjmimKyIpgBgvMdbgGbGq6cnSB2uEPmZuJr419SVRODOkXukU+F5WHgaHzDdHAIu1asCt2B +6msxqIqlFWcXyZyTGicTGGvC/PFIsVRUtD1dIJANTC876g7DTb7LZXWiWwJpSJ4GKMXMHVX Ct9BoQ4i3nhKbOxb6Io1wsy+NFyWsTJ9KYrxKKPJP3oG8BWb/cqlFqnE4eNSsiq2q7krABEB AAHNH1l1cmkgUGFua292IDx5dXJpcHZAeXVyaXB2Lm5ldD7CwJcEEwEIAEECGwMFCQWjmoAF CwkIBwMFFQoJCAsFFgMCAQACHgECF4AWIQT4arc+w94tPi0v/3CTi+B/sSrhbAUCW708wAIZ AQAKCRCTi+B/sSrhbPxBB/961alcU091O+yKT5/oReHVc/PX0Tz4sW3V44AcgLfYlrZavCro EFz90qmCrl0xqEwuAKcC4bjmL8SjPWAhSN6IH9nxdw+HeZnAPiHm/q679Bu47+nHBl3qD/9p +t1PkKeKZfaWToFMt1nq06ytSu6VLMCwLdlDNe6DReX0ex/afEqKsuaIZSKL4UYjRwklp8PU Uf98QkrfapyHB67hQMzfI4tPeJaYyv0cTgfq3kUWJx1V6Xi0b6Zxj4ZrB2TXvaMO5g7yhU9E E3WWAvoe4FgB3a7dHe8atnHhq5+Cuvm6+LD4Jh7jvMAE5UMN+xxQpnGpNghHjaCy4vXrLRBZ nhRYzsBNBFu8u6IBCADKih3Q933rDNj4ZA8FhBQ2RlmBgvwOLcDPIL3h0V7h38y3+HisgFSc XACDsdrTlYZ1bRXkD9FHENynBcv0l/3uGJDk8jaGIDE0TP8OQBRp+IaU9/BHnAqrKxTJGIol Dahy2m+yx2yhdc6B4ujWMDqCF1rWOD+ymOWw+VLllOkrHcZa5PJtX9UOGbApZl8ZTM8El4CA NN8F1bg9MWzUi+8LYoGWGc+BwsFS1OUB1c4SPgMu5fD4Wfsr9yRl06fdpEA2YT7B/j5/5RSC 0sE2Zs/tmJ/JRflHJ12ycj59ma2xQMfEJF40hZDpMFQmZvbVqgEg3ocQcltjbxlIKZ/mjC4z ABEBAAHCwHwEGAEKACYWIQT4arc+w94tPi0v/3CTi+B/sSrhbAUCW7y7ogIbDAUJBaOagAAK CRCTi+B/sSrhbIDcCACqAZMcoxUBLZa40a5b24j5i1jplvCYYb3h+Q5lt5+BFJ87kCb4dJuU D3kh2i29BrxWQWa9WNue9ozxeYkbkfXubQYXexVolRsnh64OdGsE8KvorBFBB3zdK/GRt2Jy +jsnTfUWuQllbzMP0MfhCDMk1Mo8WvDH2/cOEP/yLKf20a+cd6nLs7bidjmGXo9pyuBKAtV6 Kv+VRu54AL+A/UBYu/eB3Dtvzcnut+1Zq6KaP++kUwPwINLIk04OBDwN0zRNTiqMAFYYyz2v ZHBB6E1th/l//ZC5b9Dk0ZpFI1bYdL9ymnrZe1MqbGPnDCToQxu00T/pZCm6Z92YrZQYuNwl Message-ID: <4cd38621-7387-6302-437e-b8fda3fbe1cd@yuripv.net> Date: Mon, 22 Oct 2018 16:32:02 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <4ad1ea37-4714-a104-89a2-d7aef70d0f89@yuripv.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Oct 2018 13:32:08 -0000 Yuri Pankov wrote: > Eugene Grosbein wrote: >> Hi! >> >> $ echo test | read line; echo $? >> 0 >> $ echo -n test | read line; echo $? >> 1 >> >> Is it right behavior for /bin/sh? >> This makes it hard for "while read line ... < file" >> to process last line if it is not followed by new line character. > > POSIX defines the exit status for read as (and sh(1) says the same): > > The following exit values shall be returned: > 0 Successful completion. > >0 End-of-file was detected or an error occurred. > > ...and looks like all of /bin/sh, bash, ksh93 seem to agree on the > behavior here. BTW, it looks like last line is still parsed despite not having \n, so you could workaround it using something like (yes, looks ugly): $ printf "foo bar\n" | (while read a b; do printf "%s %s\n" $a $b; done; if test -n "$a$b"; then printf "%s %s\n" $a $b; fi) foo bar $ printf "foo bar" | (while read a b; do printf "%s %s\n" $a $b; done; if test -n "$a$b"; then printf "%s %s\n" $a $b; fi) foo bar