Доступ к функциям из внешних файлов bash
Это действительно просто, но так как я все еще новичок в написании сценариев оболочки, я не смог этого сделать. Это просто, у меня есть скрипт на основе меню, в котором, когда пользователь вводит свой выбор, я зацикливаюсь в функции case и выполняю выбранное меню. До сих пор я писал весь код в том же сценарии. Теперь я помещаю код в каждый пункт меню во внешний скрипт и получаю доступ к коду оттуда. Так что-то вроде этого,
#!/bin/bash
. course_func
file=names.dat
[ ! -f $file ] && > $file
while true
do
clear
echo ------------------------------------------
echo 1. Create a record
echo 2. View Records
echo 3. Search for records
echo 4. Delete records that match a pattern
echo ------------------------------------------
echo "Please enter your choice or enter (q) to quit: \c ";read choice
case $choice in
1)
create()
echo Enter to continue; read junk
;;
*)
clear
echo Wat nonsense enter properly
echo Enter to continue: ;read crap
;;
esac
done
Затем я создал другой внешний скрипт, где я написал функцию create()
Код находится в ссылке,
create()
{
while true
do
echo Please enter the name: ;read name
echo Please enter your surname: ;read surname
echo Please enter the address: ;read add
echo Please enter the cell no.: ;read cell
if yesno Do you really wish to save the following data to file
then
echo $name:$surname:$add:$cell >> $file
clear
echo The record has been inserted :D
else
echo The record was not save
fi
if yesno Do you wish to enter another record
then
:
else
xit
fi
done
}
addRecord()
{
}
search()
{
}
delRecord()
{
}
Но я получаю ошибку,
course_func: line 31: syntax error near unexpected token `}'
course_func: line 31: `}'
menu_driven: line 18: syntax error near unexpected token `echo'
menu_driven: line 18: ` echo Enter to continue; read junk'
В строке 31 я заканчиваю функцию addRecord, которая является пустой функцией, для остальных случаев. Разве у нас не может быть пустой функции в bash?
1 ответ
Функции не могут быть пустыми!
- Расширенное руководство по написанию сценариев: Глава 24. Функции
Вместо этого попробуйте:
addRecord()
{
return
}