我正在用bash写一个小脚本来询问用户一些设置。该脚本正在询问一些信息,然后运行其他脚本。我必须在sudo下运行它,因为我在脚本中有一些apt-get安装。
但是当我用sudo启动它时,我有这个错误:
./install_all: 1: ./install_all: Syntax error: "(" unexpected
这是我的脚本的开头:
function askAllInfo() {
echo -e "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
| Choix de la version de PHP |
| |
| 1.) PHP5 |
| 2.) PHP7 |
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#\n"
read -e -p "Selectionner la version PHP pour l'installation de Maarch (PHP5) : " phpVERSION
if [ "$phpVERSION" == "1" ] || [ "$phpVERSION" == "" ]; then
phpVersion='5'
elif [ "$phpVERSION" == "2" ]; then
phpVersion='7'
fi
echo -e "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
| Choix du chemin d'installation de MAARCH : |
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#\n"
read -e -p "Merci de spécifier le chemin pour l'installation de Maarch (/var/www/maarch_courrier) : " maarchURL
if [ "$maarchURL" == "" ]; then
MAARCH_SITE=/var/www/maarch_courrier
else
MAARCH_SITE=$maarchURL
fi
echo -e "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
| Choix du chemin des docservers : |
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#\n"
read -e -p "Merci de spécifier le chemin des docservers (/var/docserver) : " docserversURL
if [ "$docserversURL" == "" ]; then
DOCSERVER_PATH=/var/docserver
else
DOCSERVER_PATH=$docserversURL
fi
echo -e "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
| Choix du nom de la BDD : |
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#\n"
read -e -p "Merci de spécifier le nom de la base de donnée (maarch) : " databaseName
if [ "$databaseName" == "" ]; then
DATABASE_NAME=maarch
else
DATABASE_NAME=$databaseName
fi
echo -e "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
| Choix du login de l'utilisateur de la BDD : |
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#\n"
read -e -p "Merci de spécifier le login de l'utilisateur de la base de donnée (postgres) : " databaseUser
if [ "$databaseUser" == "" ]; then
DATABASE_USER=postgres
else
DATABASE_USER=$databaseUser
fi
echo -e "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
| Choix du mdp de l'utilisateur de la BDD : |
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#\n"
read -e -p "Merci de spécifier le mot de passe de l'utilisateur de la base de donnée (postgres) : " databasePass
if [ "$databasePass" == "" ]; then
DATABASE_PASSWORD=postgres
else
DATABASE_USER=$databasePass
fi
}
askAllInfo
如何解决此问题?
提前致谢
答案 0 :(得分:2)
假设您正在显示脚本的开头,我认为它可能在常规sh
下运行。 sh
语言不支持function
关键字(reference)。如果你添加
#!/bin/bash
作为脚本的第一行,以便它在bash
下运行,你应该没问题。
或者,您可以从脚本的第一行删除单词function
。但是,最好添加#!
,以便您可以使用bash
功能。
作为测试,我尝试在Cygwin上使用dash
(不支持某些bash
扩展名)。这条线
function foo() {
给了我相应的错误:
dash: 1: Syntax error: "(" unexpected
但
foo() {
工作正常。