# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # a=7 echo 'abcdefg|xyz' | { read -d '|' a echo a = "${a-unset}" cat - # make sure we don't read too much } echo xyz 123 | { read -d ' ' a echo a = "${a-unset}" } echo xyz 123 | { read -d $'\n' a echo a = -"${a-unset}"- } a=44 echo abcd | { read -d d a echo a = $a } # incomplete and invalid multibyte characters followed by the delimiter printf 'A\0B\315\0C\226\0' | while IFS= read -rd '' f; do printf '<%q>\n' "$f"; done printf 'A\nB\315\nC\226\n' | while IFS= read -r f; do printf '<%q>\n' "$f"; done printf '%b\0' winter spring 'summer\0200apple\0200banana\0200cherry' automn | while IFS= read -rd "" season; do LC_ALL=C printf "<%q>\n" "$season"; done printf '%b\200' winter 'spring\0375' summer automn | while IFS= read -rd $'\200' season; do LC_ALL=C printf "<%q>\n" "$season"; done # this test is encoding-dependent, and varies from system to system #: ${TMPDIR:=/tmp} #INFILE=$TMPDIR/read-in-$$ #printf '%b\243' winter 'spring\0375' '\0277summer' '\0277' automn > $INFILE # #LANG=zh_HK.big5hkscs #while IFS= read -rd $'\243' season; do # LC_ALL=C printf "<%q>\n" "$season" #done < $INFILE # #rm -f $INFILE exit 0