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`