( stra | 2012. 11. 30., p – 21:15 )

Ez pedig határozottan úgy tűnik, mintha a system default shell a dash lenne - ez normális, upgrade-nél, új telepítéseknél rá is kérdez - és te azt próbálod használni. A dash pedig, ahogy a manjában sem szerepel, nem támogatja a builtin echonál a "-e" opciót. De ha nem a builtin parancsot használod, hanem a /bin/echo-t, akkor lesz "-e" opciód is:


$ bash -c "echo -e szoveg"
szoveg
$ dash -c "echo -e szoveg"
-e szoveg
$ dash -c "/bin/echo -e szoveg"
szoveg
$

Másodsorban szintén olyat vársz el a dash-től, amit nem tud, és nem is állítja magáról, hogy tud:


$ man bash | grep +=
       In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to  append  to
       or  add  to the variable's previous value.  When += is applied to a variable for which the integer attribute has been set, value is evaluated as
       an arithmetic expression and added to the variable's current value, which is also evaluated.  When += is applied to an array variable using com‐
       = *= /= %= += -= <<= >>= &= ^= |=
$ man dash | grep +=
$

Ha mindnképpen ragaszkodsz a += operátorhoz, akkor bash, és ha már bash, akkor lesz a builtinjében "echo -e" is. Vagy használod a dash-t, lemondasz a += operátor élvezetéről, és megoldod a szokásos módon:


$ dash -c 'LEVELTORZS="elso sor\n" ; LEVELTORZS="${LEVELTORZS}masodik sor\n" ; LEVELTORZS="${LEVELTORZS}harmadik sor\n" ; echo "$LEVELTORZS"'
elso sor
masodik sor
harmadik sor

$