su - ${USER} -c '$(run-command find ${DIR} -name TEST* -exec rm -rf "{}" +)'
Первая проблема, с которой вы столкнулись, заключается в том, что эта команда выполняет run-command...
как уже вошедший в систему пользователь, а затем передает результат в su...
. Чтобы исправить это, просто измените его на следующее:
su - ${USER} -c 'run-command find ${DIR} -name TEST* -exec rm -rf "{}" +'
Следующая проблема заключается в том, что su создает новый сеанс оболочки, поэтому мы не можем передать наши текущие переменные и функции в новый сеанс. Я предлагаю вам создать сценарий оболочки, содержащий run-command
и запустить его из su -c...
, в результате чего наша последняя команда будет иметь вид:
su - ${USER} -c '/path/to/run-command.sh find ${DIR} -name TEST* -exec rm -rf "{}" +'
или
su - ${USER} -c 'bash /path/to/run-command.sh find ${DIR} -name TEST* -exec rm -rf "{}" +'