Для сохранения вывода команды в переменной и изменения вывода ошибки можно использовать перенаправление потоков вывода и стандартные потоки ввода-вывода в Linux.
Вот пример кода на языке Python, который решает вашу задачу:
```python
import subprocess
# Выполняем команду и перенаправляем вывод stdout в переменную
command = "cat /etc/shadow"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()
# Если команда выполнилась успешно, выводим "SUCCESS" перед содержимым файла
if process.returncode == 0:
print("SUCCESS")
print(output.decode()) # Распечатываем содержимое файла
else:
print("FAIL") # В случае ошибки выводим "FAIL" вместо стандартного текста ошибки
print(error.decode()) # Распечатываем содержимое stderr
```
В данном примере мы используем модуль `subprocess` для выполнения команды в оболочке. С помощью параметра `stdout=subprocess.PIPE` мы перенаправляем стандартный поток вывода в переменную `output`. Если значение `process.returncode` равно 0, то команда выполнена успешно, и мы выводим "SUCCESS" и содержимое файла с помощью `output.decode()`. Если значение `process.returncode` не равно 0, то команда завершилась с ошибкой, и мы выводим "FAIL", а также содержимое стандартного потока ошибок с помощью `error.decode()`.