согласно http://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci можно сбросить отдельные функции устройства, если это поддерживается:
What: /sys/bus/pci/devices/.../reset
Description:
Some devices allow an individual function to be reset
without affecting other functions in the same device.
For devices that have this support, a file named reset
will be present in sysfs. Writing 1 to this file
will perform reset.
Используя Ваш пример foo && bar || baz
выполнится baz
если bar
или foo
сбои. На основе Вашего описания, это не, что Вы хотите. Можно выполнить цель с помощью if
оператор:
if foo; then
bar
else
baz
fi
Или если Вы хотите это на одной строке:
if foo; then bar; else baz; fi
Полный синтаксис сценария оболочки доступен Вам в ssh
команда. (Команды выполняются оболочкой удаленной учетной записи по умолчанию; мы предполагаем здесь, что это sh
- совместимый.)
Команды Compund должны быть заключены в кавычки. В то время как Ваше использование двойных кавычек корректно, я рекомендовал бы одинарные кавычки, так как они защищают все специальные символы оболочки; это может быть важно, если Вы хотите использовать нетривиальные конструкции оболочки в своих удаленных командах.
С этим из пути вот один способ сделать то, что Вы хотите:
ssh user@host 'foo && bar || { echo foo failed >&2; baz; }'
Можно также использовать произвольно сложные условные выражения:
ssh user@host '
if foo; then
bar
else
echo foo failed >&2
baz
fi'
(Да, это - единственная, многострочная строка в одинарных кавычках.)
if
оператор - то, что через команды, как предполагается, проходят SSH, и мне нужен он, чтобы быть одной строкой. Может это быть записанным какssh user@host "if foo; then bar else baz fi"
? – rld. 14.07.2013, 21:56;
. Я поместил его на несколько строк для ясности. – jordanm 14.07.2013, 22:00