diff options
author | Crestwave <crest.wave@yahoo.com> | 2019-09-23 20:19:13 +0800 |
---|---|---|
committer | Crestwave <crest.wave@yahoo.com> | 2019-09-23 20:19:13 +0800 |
commit | 172056a6c7f488d36df1e0cdf1fed709341af845 (patch) | |
tree | 27ec2344d1cfa3cf89fcc9711ccdd99f282117ae | |
parent | bef1e1dc2592b1b630c4f5c492338a9e38d63975 (diff) | |
download | pure-sh-bible-172056a6c7f488d36df1e0cdf1fed709341af845.tar.gz pure-sh-bible-172056a6c7f488d36df1e0cdf1fed709341af845.zip |
Add support for lines that end without a newline
-rw-r--r-- | README.md | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -393,10 +393,11 @@ Alternative to the `head` command. head() { # Usage: head "n" "file" while read -r line; do - [ "$i" = "$1" ] && break printf '%s\n' "$line" i=$((i+1)) + [ "$i" = "$1" ] && return done < "$2" + [ -n "$line" ] && printf %s "$line" } ``` @@ -420,7 +421,7 @@ Alternative to `wc -l`. ```sh lines() { # Usage: lines "file" - while read -r _; do + while read -r line || [ -n "$line" ]; do lines=$((lines+1)) done < "$1" @@ -568,7 +569,7 @@ done ## Loop over the contents of a file ```shell -while read -r line; do +while read -r line || [ -n "$line" ]; do printf '%s\n' "$line" done < "file" ``` |