Это выполняет вывод команды, которая, например, в случае ls -l сгенерирует сообщение типа "total" команда не найдена "(потому что total ... является частью вывода ls -l, например). Так что это НЕ то, что вы хотите.

равильно вызвать некоторую команду, хранящуюся в переменной?
Есть ли различия между 1 и 2?

#!/bin/sh
cmd="ls -la $APPROOTDIR | grep exception"
#1
$cmd
#2
eval "$cmd"

Ответы на вопрос(3)

Ваш ответ на вопрос