Não, as strings aqui não estão disponíveis em ksh88 e pdksh . No mais recente ksh93 (original AT & T Korn Shell) e mksh (atualmente ativamente desenvolvido pdksh derivativo) está, no entanto, disponível.
<<< é uma das extensões de shell "modernas" compartilhadas entre ksh93 , mksh , GNU bash e zsh .
Seu problema específico ...
read A B C <<< $line
… pode ser trabalhado com isso (shell Korn):
print -r -- $line |&
read -p A B C
Você também pode usar este (shell POSIX), mas tem pena de desempenho tffile (por outro lado, <<< provavelmente também tem isso):
read A B C <<EOF
$line
EOF
Se você quiser apenas dividir as palavras:
set -A arrname -- $line
Em seguida, use ${arrname[0]} em vez de $A e ${arrname[1]} em vez de $B . Apenas não será interrompido a divisão em três elementos, portanto, se $line for " foo bar baz bla ", $C conterá "baz bla", enquanto ${arrname[2]} terá "baz" e ${arrname[3]} terá "bla".
Se você não precisa dos seus parâmetros posicionais, você pode fazer
set -- $line
A=$1; shift
B=$1; shift
C=$*
O shift causará erros se $line tiver menos de três palavras (verifique $# se não tiver certeza ou use [[ $line = *' '*' '[! ] ]] (provavelmente mais lento) para verificar primeiro).
Lembre-se que set … $line também fará globbing (obrigado Stéphane por nos lembrar), então você precisa de set -o noglob antes (e possivelmente restaurar o estado anterior depois, geralmente set +o noglob ).
Divulgação completa: sou o desenvolvedor mksh .