Al di là del fatto che come script non ha molto senso (perché appunto tanto vale fare direttamente ls -l) per avere l'output di un comando in bash bisogna utilizzare i backtick ` non gli apici singoli '. Detto questo, in quel modo otterresti comunque la stampa delle singole stringhe che costituiscono l'output del comando, non le righe. Puoi risolvere così:
codice:#!/bin/sh while read line do echo $line done < `ls -l`