Как объединить счетное сложение и суммирование

Вот обходной путь для автоматизации парольной фразы SSH.

  1. Создайте однострочный сценарий, который выводит вашу парольную фразу на стандартный вывод, например:

      echo 'echo MY_SSH_PASSWORD'> ~ / .print_ssh_password && chmod 700 ~ / .print_ssh_password 
     

    Важно: убедитесь, что вы копируете начальный пробел в , чтобы предотвратить сохранение пароля в истории .

И воспользуйтесь одним из следующих способов.

  • с использованием стандартного метода ввода:

     cat ~ / .ssh / id_rsa | SSH_ASKPASS = ~ / .print_ssh_password ssh-add - подход 
     
  • или именованный канал :

    1. Создайте именованный канал (вы также можете попробовать ] подстановка процесса ):

       mkfifo --mode 0600 ~ / .ssh_fifo 
       
    2. Запустите ssh-add , указав программу, используемую для аутентификации:

       кошка ~ / .ssh / id_rsa> ~ / .ssh_fifo | SSH_ASKPASS = ~ / .print_ssh_password ssh-add ~ / .ssh_fifo 
       

    См .: man ssh-add , чтобы узнать больше о SSH_ASKPASS .

0
23.04.2018, 02:59
1 ответ

Отвечая на ваш комментарий к вопросу :Вам не нужно $countдо фактического вычисления среднего значения. А пока достаточно иметь

total=$(( total + input ))

Это добавит то, что ввел пользователь, к промежуточному итогу.

Затем можно рассчитать среднее значение, как$(( total / count ))(примечание, так как оболочка выполняет только целочисленную арифметику, это будет целое число, см. Как выполнять целочисленные и плавающие вычисления в bash или других языках/фреймворках? ").


Прочее:

Ваша переменная $notdoneустановлена ​​в строку true, и вы используете ее в while [ $notdone ]. Подобные тесты для строк без кавычек ненадежны, и ваше условие цикла whileлучше записать как

while [ "$notdone" = "true" ]

Вы также должны рассмотреть возможность заключения в кавычки всех других расширений переменных в своем коде, например

if [[ "$input" -ge "$middle" ]]; then

Это особенно важно в вашем цикле ввода, иначе вы сгенерируете синтаксическую ошибку, введя что-то с пробелом посередине.

Поскольку вы используете bash,вышесказанное также может быть написано

if (( input >= middle )); then

У вас также нет способа выйти из основного цикла, и оба echoв конце говорят: «Ваш ответ находится в верхней половине».

0
28.01.2020, 04:24

Теги

Похожие вопросы