You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
I would like to read a multi-line string, with proper exit code.
Here Document, and Here String methods are not optimal,
for performance, Process Substitution is desired, eg
The following reads the string as expected, with an exit status 0, GNU bash, version 5.2.15(1)-release
eot="$(awk 'BEGIN{printf "%c",4}')"
IFS= read -d "$eot" lines <<(printf "one \ntwo \nthree \n${eot}")echo"$lines"
one
two
three
Two issues here, 1) the awk statement is the only way I know to reference the ascii EOT character (od could probably work too). Is there any builtin method to generate characters from their numeric equivalent? 2) Shouldn't read have an option to gracefully complete the read, on end-of-transmission, or end of file (ie, the first example)? Typically it would be inconvenient (and with performance impact) to inject this ${eot} with my Process Substitution. I am inclined to simply ignore the exit status. Is there a better option?
The text was updated successfully, but these errors were encountered:
-d delim continue until the first character of DELIM is read, rather
than newline
Exit Status:
The return code is zero, unless end-of-file is encountered, read times out
(in which case it's greater than 128), a variable assignment error occurs,
or an invalid file descriptor is supplied as the argument to -u.
The return code is not zero because the end-of-file is reached. The end-of-line is reached first because the delimiter is not found first.
This is by design. Why to bother?
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
I would like to read a multi-line string, with proper exit code.
Here Document, and Here String methods are not optimal,
for performance, Process Substitution is desired, eg
"works" however it returns an error status.
The following reads the string as expected, with an exit status 0, GNU bash, version 5.2.15(1)-release
Two issues here, 1) the awk statement is the only way I know to reference the ascii EOT character (od could probably work too). Is there any builtin method to generate characters from their numeric equivalent? 2) Shouldn't
read
have an option to gracefully complete the read, on end-of-transmission, or end of file (ie, the first example)? Typically it would be inconvenient (and with performance impact) to inject this${eot}
with my Process Substitution. I am inclined to simply ignore the exit status. Is there a better option?The text was updated successfully, but these errors were encountered: