Здесь, если lsusb
сбрасывает ошибку, сообщение об ошибке не перенаправляется, только ошибки из grep
. Ошибки из lsusb
по-прежнему идут как обычно stderr
, т.е. терминал (или что там stderr
было при запуске скрипта.
VENDOR=$(lsusb -D "$DEVICE" | grep idVendor 2>&1)
.
$ blah=$(ls -l /nonexisting | grep foo 2>&1)
ls: cannot access '/nonexisting': No such file or directory
$ echo "blah: '$blah'"
blah: ''
Вам потребуется перенаправить оба их вывода как группу, чтобы подстановка команд также зафиксировала ошибку:
$ blah=$( { ls -l /nonexisting | grep foo; } 2>&1)
$ echo "blah: '$blah'"
blah: 'ls: cannot access '/nonexisting': No such file or directory'
Использование отдельных перенаправлений, таких как $( foo 2>&1 | grep 2>&1 )
, приведет к отправке ошибок первой команды в конвейер, а для grep
— в фильтр, что в приведенном выше примере снова приведет к пустому выводу.
Для этого требуется специальная опция в модуле git с именемaccept_hostkey
.
На машине, которую вы предоставляете, вы также должны сообщить ей, что для нее не требуется действительный ключ хоста. Вы можете сделать это с помощью
~/.ssh/config
на удаленном хосте с помощьюStrictHostKeyChecking no