Автор Тема: Создание меню на bash  (Прочитано 6495 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Создание меню на bash
« : 09 Сентября 2014, 11:36:01 »
Доброго времени суток форумчане.
Нужна помощь в написании меню. Меню подобное этому

root@debian:/var/src# cat select
#!/bin/bash
function ping_ya {
clear
ping -c 3 ya.ru
}
function  ifconfig {
clear
/sbin/ifconfig
}
function meminfo {
clear
/bin/ cat /proc/meminfo
}
#Создаем меню
function menu {
clear
echo
echo -e "\t\t\tМеню скрипта\n"
echo -e "\t1. Пинговать ya.ru"
echo -e "\t2. Информация об интерфейсах"
echo -e "\t3. Информация о памяти"
echo -e "\t0. Выход"
echo -en "\t\tВведите номер раздела: "
read -n 1 option
}
#Используем цикл While и команду Case для создания меню.
while [ $? -ne 1 ]
do
        menu
        case $option in
0)
        break ;;
1)
        ping_ya ;;
2)
        ifconfig ;;
3)
        meminfo ;;
*)
        clear
echo "Нужно выбрать раздел";;
esac
echo -en "\n\n\t\t\tНажмите любую клавишу для продолжения"
read -n 1 line
done
clear

теперь о том, что я хочу реализовать.
в каталоге /var/vpn/ лежат файлы для коннекта к vpn через pon, их примерно 5-6 в менюшке хочу реализовать вывод списка со скриптами и куда можно приконнектиться.Я думаю понятно написал. см.аттач
при клике на кнопку 1 показать все скрипты в нужном каталоге, через ls у меня немного не получается
Либо подскажите в какую сторону копать
 

Оффлайн endru

Re: Создание меню на bash
« Ответ #1 : 09 Сентября 2014, 13:31:57 »
а в чем проблемы? даже исходники есть которые можно править... по аналогии и сделай.
есть конкретные вопросы по bash?

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Re: Создание меню на bash
« Ответ #2 : 09 Сентября 2014, 13:39:35 »
Я пробовал править. Но сделать так как нужно не удалось.
Нужно списком вывести все скрипты лежащие в папке
 

Оффлайн endru

Re: Создание меню на bash
« Ответ #3 : 09 Сентября 2014, 13:57:48 »
find /var/vpn/ -type f -name '*.txt' | while read i
        do
                echo `basename $i`
        done
ищет все файлы txt в директории /var/vpn/ и выводит их имя (без директории) на экран.

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Re: Создание меню на bash
« Ответ #4 : 09 Сентября 2014, 14:06:15 »
find /var/vpn/ -type f -name '*.txt' | while read i
        do
                echo `basename $i`
        done
ищет все файлы txt в директории /var/vpn/ и выводит их имя (без директории) на экран.
как вывести я знаю. я просто не так выразился.
их нужно вывести построчно с номером 1.2.3 и тд.
типа такого
**Выберите сервер**
1. офис
2. дом
3. офис_о

--Нажмите клавишу для продолжения. ну и по нажатию на нужную клавишу обрабатывается нужный pon скрипт
 

Оффлайн endru

Re: Создание меню на bash
« Ответ #5 : 09 Сентября 2014, 18:32:21 »
отлично. если вы знаете как выводить это на экран, то переделать готовый скрипт не составит труда!
переделывайте скрипт и показывайте, что конкретно не получается!

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Re: Создание меню на bash
« Ответ #6 : 10 Сентября 2014, 14:16:04 »
Кое что стало получаться. А не подскажите, как я могу дать имя функции из переменной?
 

Оффлайн vic5710

Re: Создание меню на bash
« Ответ #7 : 10 Сентября 2014, 22:41:43 »
фция определяется до ее вызова
насчет экрана
dialog  --menu
man dialog
примеров а нете куча
 

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Re: Создание меню на bash
« Ответ #8 : 10 Сентября 2014, 23:06:41 »
Кое что стало получаться. А не подскажите, как я могу дать имя функции из переменной?
Я искал в инэте. но не нашел ничего. книьте ссылку на пример.
 

Оффлайн vic5710

Re: Создание меню на bash
« Ответ #9 : 11 Сентября 2014, 16:01:33 »
не совсем вас понял

func1() {}
func2() {}
func3() {}

echo choice?
read line
[ $line == 1 ] && func1
[ $line == 2  ] && func2

так как то?

 

Оффлайн endru

Re: Создание меню на bash
« Ответ #10 : 12 Сентября 2014, 07:50:25 »
А не подскажите, как я могу дать имя функции из переменной?
никак.
Обозначай их как
function name1 {}
function name2 {}

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Re: Создание меню на bash
« Ответ #11 : 12 Сентября 2014, 14:38:06 »
есть переменная $x значение в ней может быть разное.
отталкиваясь от этого я и хотел создать функции.
типа function 1 {}
function 2 {} и т.д. Смотрел в сторону case, но тоже четно
 

Оффлайн vic5710

Re: Создание меню на bash
« Ответ #12 : 12 Сентября 2014, 19:25:18 »
для этого есть параметры функции
 

Оффлайн letnab

  • Пользователь
  • *
  • Сообщений: 36
Re: Создание меню на bash
« Ответ #13 : 12 Сентября 2014, 23:09:56 »
спасибо за наводку. и снова загвоздка


#!/bin/bash

function countpon
{
    if [ $# -ne 0 ]
    then
        local a=1
        echo "Всего скриптов - $#"
        for i in $@
        do
            echo "$a-й  $i"
            let a++
        done
        return 0
    else
        echo "Параметры не передавались"
        return 1
    fi
}



function viewpon {
clear
sod=`ls /etc/ppp/peers/`
echo -e "===================================="
echo -e         "PON скрипты"
countpon  $sod
echo -e "===================================="
}


на выходе

====================================
PON скрипты
Всего скриптов - 8
1-й  officr
2-й  sp_office
3-й  nn_office
4-й  test
5-й  cool_one
6-й  sip
7-й  oper_v
8-й  100mts
====================================
Такой вопрос. возможно ли это запихнуть в case? и при нажатии на 1, 2, 3 и т.д осуществится какое то действие?
 

Оффлайн vic5710

Re: Создание меню на bash
« Ответ #14 : 13 Сентября 2014, 08:04:08 »
у вас есть список
добавьте :

echo ' make your choice'

read line
[  $line == 1 ] && yourfunc1
и тд
имхо вы усложняеете себе задачу
 

Теги:
     

    Программирование на php и создание локального сервера

    Автор sCode

    Ответов: 5
    Просмотров: 3054
    Последний ответ 03 Марта 2012, 06:03:55
    от Babay