Кто может объяснить такую странность - замену одиночных кавычек двойными, внезапно?
> cat zzz
#!/bin/sh
function ff {
cat
}
v1=`ff <<EOF
foo'bar'
EOF`
echo v1:=$v1=
v2=$(ff <<EOF
foo'bar'
EOF
)
echo v2:=$v2=
> ./zzz
v1:=foo'bar'=
v2:=foo"bar"=
А если поменять шелл на /bin/bash, то сразу хорошо:
> ./zzz
v1:=foo'bar'=
v2:=foo'bar'=
Дело происходит на AIX. /bin/ksh даёт такой же результат как /bin/sh. Нигде не нашёл объяснения. В линуксе везде нормально, одиночные кавычки всегда. Получается, что ` работает иногда корректнее, чем позиксовый $()
PS На макосе так же, как на линуксе. Не сюрприз.
PPS Нашёл https://stackoverflow.com/questions/25569857/ksh88-changing-single-quotes-to-... . Обтекаю.