Hi folks,
a colleague pointed me to a changed behavior of bash 5.1.4 in Debian 11.
Would you mind to take a look at this code?
----
#! /bin/bash
# set -x
insert()
{
local data="$1"
local lineNumber="$2"
head -n "$lineNumber"
echo ' <!-- BEGIN inserted by '"$( basename "$0" )"' -->'
cat <<< "$data"
echo ' <!-- END inserted by '"$( basename "$0" )"' -->'
cat
}
text="this is line one
this is line two
this is line three
this is line four
this is line five
this is line six
this is line seven"
output="$( insert "Hello" 3 <<< "${text}" )"
echo "$output"
----
On bash 5.0.3 (Debian 10) it shows
----
this is line one
this is line two
this is line three
<!-- BEGIN inserted by works_on_deb10_but_not_deb11 -->
Hello
<!-- END inserted by works_on_deb10_but_not_deb11 -->
this is line four
this is line five
this is line six
this is line seven
----
On bash 5.1.4 (Debian 11) and 5.1.6 (openBSD 7.1) I get
----
this is line one
this is line two
this is line three
<!-- BEGIN inserted by works_on_deb10_but_not_deb11 -->
Hello
<!-- END inserted by works_on_deb10_but_not_deb11 -->
----
Lines 4 to 7 are lost. How comes? Is this a problem of
bash at all?
Every insightful comment is highly appreciated
Harri