svcs network/shell | sed -n '/^online /c\
True' >> Solaris.txt
... deve ser praticamente o equivalente.
A razão seu script não mostra nada, porém, é que a função shell é um código shell que deve ser executado por um shell que já o conhece - a função deve primeiro ser declarada no shell em que é executado para funcionar.
Quando você chama xargs
, no entanto, você chama um programa que chama outro programa, que é um shell, é claro, mas os novos processos shell que xargs
chama para você não são ciente da função de shell definida no seu shell atual.
É claro que você faz export -f
, o que funcionaria, talvez, se o seu shell entendesse o que isso significava, mas se você estiver usando ksh
em um sistema Solaris - então não. E, de qualquer forma, isso seria um meio ineficiente de atingir o seu objetivo se isso acontecesse.