Перенаправить стандартную ошибку ssh
в файл в рамках подстановки команды, а затем проверить, является ли файл пустым или нет:
output="$( ssh server 'command' 2>ssh.err )"
if [[ -s ssh.err ]]; then
echo 'SSH error:' >&2
cat ssh.err >&2
fi
rm -f ssh.err
, который отображает ошибку SSH:
следует записанными сообщениями об ошибках из ssh
.
Если вы хотите различать
вывод некоторых команд, используйте подстановку процесса <(...)
вместо подстановки команд $ (...)
. В противном случае кажется, что это должно сработать.
diff $ (foo)
помещает вывод foo
в командную строку diff
, в то время как diff
хочет, чтобы имя файла читать. diff <(foo)
обеспечивает доступность вывода foo
из fd и дает diff
путь, соответствующий уже открытому fd ( / dev / fd / NN
, может зависеть от системы).
Прочитав вопрос еще раз, возможно, вы захотите сделать что-то вроде этого:
for f in *.wav ; do
b=${f%.wav}
if [ -f "$b.mp3" ] ; then echo "$b.mp3 exists" ; else
echo "$b.mp3 missing" ; fi
done
Это покажет, все ли .wav
файлы в каталоге имеют соответствующие .mp3
файл. (Но, конечно, не будет отображать файлы .mp3
, у которых нет соответствующего .wav
.)