Я начинаю писать сценарий, который является исключительно файловым менеджером, и я устанавливаю функцию, предлагающую пользователю установить их предпочтительный текстовый редактор, и он всегда заканчивается сообщением об ошибке:
/home/user/bin/manager: line 12: syntax error near expected token 'fi'
/home/user/bin/manager: line 12: 'fi'
Это код:
#!bash/bin
#File managing shell
editor() {
read -p "What file editor would you like to use? (Nano) or (Vi)m " answer
export $answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ [ "$answer" -eq "nano" && "vi" && "vim" && "emacs" ] ]
then
editor="$answer"
else
echo "This is embarassing, I didn't understand your input..."
editor ()
fi
}
echo -e "" #this area tells the user he commands and etc. it takes forever to type...
sleep 1
editor()
Что-то мне не хватает?
Спасибо
#!/bin/bash
в качестве shebang. [ [
... ] ]
"$answer" -eq "nano" && "vi" && "vim" && "emacs"
не будет проверять ответ на соответствие этим четырем словам. определение функции
while read -p "What file editor would you like to use? (Nano) or (Vi)m " answer
do
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
case $answer in
( nano | vi | vim | emacs )
$answer ;
## OR
export EDITOR=$answer
break
;;
( * )
echo "This is embarassing, I didn't understand your input..."
;;
esac
done
export $answer=
, скорее всего, не сработает (в первый раз) или даст неожиданный результат (в следующий раз)$answer
для вызова редактора (или $answer "$myfile"
), export EDITOR=$answer
для его установки, export EDITOR=$(which $answer)
. Второй и третий
editor ()
должны быть просто
editor
. Скобки нужны только для определения функции.
Синтаксический анализатор bash жалуется на отсутствие ';'
после ()
, но это только часть проблемы.