I've made the following script to isolate the issue:
#!/bin/sh
echo_n_init=no
echo_n () {
'
}
echo_n "abcdefghijklmnopqrstuvwxyz" | gpg2 --with-colons --print-mds
If I run it with "bash -x" I get:
+ echo_n_init=no
+ echo_n abcdefghijklmnopqrstuvwxyz
+ test no = no
+ echo 'testing\c'
+ echo 1,2,3
+ gpg2 --with-colons --print-mds
+ grep c
+ echo -n testing
+ sed s/-n/xn/
+ echo 1,2,3
+ grep xn
+ echo_n_n=-n
+ echo_n_c=
+ echo_n_init=yes
+ echo -n abcdefghijklmnopqrstuvwxyz
:1:C3FCD3D76192E4007DFB496CCA67E13B:
:2:32D10C7B8CF96570CA04CE37F2A19D84240D3A89:
:3:F71C27109C692C1B56BBDCEB5B9D2865B3708DBC:
:11:45A5F72C39C5CFF2522EB3429799E49E5F44B356EF926BCF390DCCC2:
:8:71C480DF93D6AE2F1EFAD1447C66C9525E316218CF51FC8D9ED832F2DAF18B73:
:9:FEB67349DF3DB6F5924815D6C3DC133F091809213731FE5C7B5F4999E463479FF2877F5F2936FA63BB43784B12F3EBB4:
:10:4DBFF86CC2CA1BAE1E16468A05CB9881C97F1753BCE3619034898FAA1AABE429955A1BF8EC483D7421FE3C1646613A59ED5441F
B0F321389F77F48A879C7B1F1:
which is correct. If I run it with "dash -x" I get:
+ echo_n_init=no
+ echo_n abcdefghijklmnopqrstuvwxyz
+ test no =+ no
gpg2 --with-colons --print-mds
+ grep c
+ echo testing\c
+ echo 1,2,3
+ echo -n testing
+ echo 1,2,3
+ sed s/-n/xn/
+ grep xn
+ echo_n_n=
+ echo_n_c=
+ echo_n_init=yes
+ echo abcdefghijklmnopqrstuvwxyz
:1:AD5DEB9B35AB55595BC8312CF1EE134F:
:2:7FDFFACEC05073FD23135CF94868A0076ABF3953:
:3:13F4E18DD89D9611E224C7A73E25C6A42BFF090F:
:11:DBB9A410F16C536637D928B37682A522E3A473864EF6915715DE81B3:
:8:DC6BEFD7DC150815AC9DA4477A059849BC60CE64B052F7D73F33239ADB80F292:
:9:5EAB880F1B7A7E5E888A745B650D705DF7DD1960728BE123088C897B5BCFD37042BE1EFD172CFC0B09E1705EB190A8F4:
:10:6B779E094FB3286174E9E7D08C3D65D6755AC29ACDBEDE2B48E35EA1E9F040E089F62ED8C1378AF2D999F4562334BB071D7493A
FEA19E62C00678F59AA624126:
which is, obviously, not correct.