Команда EXPR
может делать только целые или строковые манипуляции. Посмотрите на страницу человека для этого руководства:
Операнды являются целыми числами или строками. Целые числа состоят из одного или Более десятичные цифры, с дополнительным ведущим «-». «Expr» преобразует все, что появляется в операнде для целого числа или строки в зависимости от операции, применяемой к нему.
Итак, для выполнения этого типа работы вам необходимо заручиться привлечению кадалятора командной строки, такого как BC
.
$ mPercent='.123'
$ fPercent='.345'
$ echo "$mPercent / 100 * .482 + $fPercent / 100 * .518" | bc -l
.00237996000000000000
Примечание: EXPR
не является частью Bash, это автономный исполняемый файл, который является частью пакета CORETILS. В системах с использованием RPMS вы можете увидеть это так:
$ rpm -qf $(type -p /usr/bin/expr)
coreutils-8.21-13.fc19.x86_64
Использование ваших данных, которые вы предоставили в комментариях 3.27 для 2 переменных, дают следующие:
$ mPercent='3.27'
$ fPercent='3.27'
$ echo "$mPercent / 100 * .482 + $fPercent / 100 * .518" | bc -l
.03270000000000000000
Можно ли использовать Sudo
перед командой, которую вы хотите выполнить? Как вместо:
su
whatever command
сделать:
sudo whatever command
Причина сбоя в том, что по умолчанию ssh
не создает терминал ( pty
) на целевой машине. Это означает, что su
не может запрашивать пароль, поэтому он не работает. ( sudo
также не будет запрашивать запрос по той же причине, если не задан флаг -S
, как указано @Scott.)
Вы можете указать ssh
создать терминал ( pty
) в удаленной системе, чтобы su
мог запрашивать пароль. С помощью обычной команды вы можете сделать это, указав флаг -t
для ssh. К сожалению, я не могу предложить вам какой-либо способ сделать это с SSH.NET , потому что его документация предоставляется в формате CHM, который я не могу открыть.
Вы можете полностью вырезать часть su
, подключившись к удаленному серверу с желаемой целевой учетной записью пользователя, «root». По соображениям безопасности это может привести к сбою в некоторых системах, которые отклоняют входы в систему с правами root, которые пытаются использовать пароль, поэтому вы можете захотеть исследовать входы на основе сертификатов. Подходящий сертификат можно создать с помощью команды ssh-keygen -t rsa
.