Добрый день. При реализации скрипта столкнулся с проблемой, нужно реализовать функцию которая будет в зависимости от входящих параметров выполнять определенные действия. Если на вход скрипта поступает параметр -p or –proc то на экран должно отобразиться содержимое директории /proc, а если есть второй параметр например cpuinfo, то при выполнении скрипта ./script.sh -p cpuinfo выведит на экран содержимое файла. Текст фнукции
proc () {
if [ "$1" = "-p" ]
then
ls /proc
elif [ "$2" != " " ]
then
cat /proc/"$2"
else
exit
fi
}
В таком ввиде когда запускаю скрипт
./script.sh -p
не отрабатывает команда ls которая выдать листининг директории /proc и выдает ошибку «cat /proc это каталог», а если запустить скрипт с двумя переменными
./script.sh -p cpuinfo
после выполнения выводиться содержимое файла /proc/cpuinfo.
Данная функция после запуска должна отрабатывать в двух видах
./script.sh -p и ./script.sh --proc,а также с двумя параметрами
./script.sh -p($1) $2(любой файл в директории /proc) и ./script.sh --proc($1) $2
Можете сказать где мог допустить ошибку и как добавить реализацию для –proc
По сути нужно написать скрипт который будет выполнять мониторинг ресурсов сервера, в скрипте должны быть функции: помощь (выводит список опций скрипта); работа с директорией работа с процессором работа с памятью и т.д. Каждая функция должна выполняться с «-» и «–» например:
./scpript.sh -h or ./script.sh --help
./script.sh -p or ./script.sh --proc
и т.д.
Подскажите как лучше сделать в каждой функции сделать цикл
while getopts ":h:p:m" arg; do
case $arg in
-h ) command
-m) command
esac
done
Или же в каждой функции сделать проверку на ввод параметров, а уже в главной функции(main) сделать цикл while который будет проверять в каком в виде введен первый параметр с («-» или «–») и выполнял соответствующие функции.
while getopts ":h:p:m" arg; do
case $arg in
-h ) command
--help) command
-m) command
--memory) command
и т.д.
esac
done
Перемещено hobbit из general