Я продолжаю получать сообщение о том, что команда не найдена, когда пытаюсь запустить свой код в bash

Наконец-то я нашел решение, поэтому, если кто-то попал в ту же проблему, ответ - добавить в файлы account1 и account2 сопоставление для sortcuts, то есть из muttrc, строки

bind    index   G  imap-fetch-mail
macro   index   gi "<change-folder>=INBOX<enter>"       "Go to Inbox"
macro   index   gs "<change-folder>=$my_sent<enter>"    "Go to Sent"
macro   index   gd "<change-folder>=$my_drafts<enter>"  "Go to Drafts"
macro   index   gt "<change-folder>=$my_trash<enter>"   "Go to Trash"

также должны находиться в конце исходных файлов accout1 и account2. Кажется, что muttзаполняет значение переменных при чтении конфигурации в первый раз, а не сохраняет переменную и оценивает выражение для ярлыка каждый раз, когда ярлык запускается с фактическим значением переменной.

3
09.12.2020, 21:33
3 ответа

I am running putty for my class and I am on the atlas server

в командной строке шпатлевки введитеwhich bc

он должен ответить/usr/bin/bc

если он говорит, что не найден, то, вероятно, программа bc - An arbitrary precision calculator languageне установлена ​​в системе, с которой вы работаете.

если вы сделаете rpm -qa | grep bc, вы должны увидеть что-то вроде bc-1.06.95-13.el7.x86_64.

Скорее всего, будет сообщено о нескольких вещах, так как шаблон будет соответствовать многим другим вещам, таким как libc, glibc, bcrypt и чему-то еще, просто сочетающему буквы b и c.

Если bcустановлен и должен быть найден как /usr/bin/bc, рассмотрите возможность указания полного пути к нему, который равен /usr/bin/bcв вашем сценарии bash. Существуют аспекты безопасности Linux, где переменная среды PATH ограничена в сценарии bash, однако /usr/binопределенно не будет заблокирована или исключена, поэтому более чем вероятно, что bc не установлен на том сервере atlas, на котором вы находитесь.

Нет ничего плохого в вашем опубликованном коде . Точно так же, как опубликовано, он отлично работает для меня на RHEL 7, вывод

5
31.40
3095.914400
The radius of a circle is 31.40
The area of a circle is 3095.914400
1
18.03.2021, 22:43

с вашим кодом радиус получается больше длины окружности.

Попробуйте это:

#!/bin/bash
pi=3.14;
circumference=5;
echo "$circumference"
radius=$(echo "$circumference" / 2 / "$pi" |bc -l);
echo "$radius"
area=$(echo "$pi" \* "$radius" \* "$radius" |bc -l);
echo "$area"
echo "The radius of a circle is $radius";
echo "The area of a circle is $area";
exit
0
18.03.2021, 22:43

The OP came up with a sensible script, and can't even get to test it because his course stuck him with a broken copy of Linux

это, вероятно, не сломанная копия Linux.

Станьте героем класса, выполнив следующие действия

  1. загрузить исходный код программы bc-1.03.tar.gzизhttps://ftp.gnu.org/gnu/bc/
  2. загрузите этот файл.tar.gz на сервер, над которым вы работаете.
  3. tar -xf bc-1.03.tar.gz
  4. cd bc-1.03
  5. ./configure
  6. make
  7. рабочий исполняемый файл bcбудет доступен в этом текущем каталоге.
  8. просто укажите это bcместоположение в вашем скрипте bash, пример ниже.
  9. откройте права доступа к этому файлу и папке и разрешите своим одноклассникам также запускать их.

#!/bin/bash
pi=3.14;
circumference=5;
echo "$circumference"
radius=$(echo "$circumference" \* 2 \* "$pi" |/home/ron/bc-1.03/bc -l);
echo "$radius"
area=$(echo "$pi" \* "$radius" \* "$radius" |/home/ron/bc-1.03/bc -l);
echo "$area"
echo "The radius of a circle is $radius";
echo "The area of a circle is $area";
exit
2
18.03.2021, 22:43

Теги

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