aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCrestwave <crest.wave@yahoo.com>2019-09-23 20:19:13 +0800
committerCrestwave <crest.wave@yahoo.com>2019-09-23 20:19:13 +0800
commit172056a6c7f488d36df1e0cdf1fed709341af845 (patch)
tree27ec2344d1cfa3cf89fcc9711ccdd99f282117ae
parentbef1e1dc2592b1b630c4f5c492338a9e38d63975 (diff)
downloadpure-sh-bible-172056a6c7f488d36df1e0cdf1fed709341af845.tar.gz
pure-sh-bible-172056a6c7f488d36df1e0cdf1fed709341af845.zip
Add support for lines that end without a newline
-rw-r--r--README.md7
1 files changed, 4 insertions, 3 deletions
diff --git a/README.md b/README.md
index 2edfe63..b88936a 100644
--- a/README.md
+++ b/README.md
@@ -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"
```