A maneira como o shell analisa a linha de comando significa que as entradas para o script de shell serão interrompidas quando chegarem ao pipe. O que você provavelmente terá que fazer para contornar isso é colocar sua linha de comando entre aspas, então:
./myscript.sh "ls -lart |grep ^d"
Em seguida, no script, use o comando eval
para executá-lo, como em:
eval "$@" | someothercommand