私は現在、bashで少しのスクリプトを書いてユーザに設定を尋ねています。スクリプトはいくつかの情報を求めていて、他のスクリプトを実行しています。私はスクリプトでapt-getをインストールしているので、sudoの下で実行する必要があります。sudoを使用したBASHスクリプト
しかし、私は、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
は、どのように私はこの問題を解決することができますか?事前
@cxw、ありがとう、私の問題を解決します。私はまったくこれを考えなかった、私はどれほど愚かなのだろうか? ahah – Nathan30
@ JohnKugelmanそして、やや無効なbashコードを作成する方法は、多くの微妙な方法があります。ちょうど1つの例です:あるbashの達人は、あなたが '$ {variable}'のために常に行くと言っていて、いつも常に常に[["の代わりに[['私の目では、bashは**間違ったことをするための**超簡単**を可能にする言語の1つです。遅くまで(あまりにも)気づくことさえありません。 – GhostCat
sudoの下でスクリプト全体を実行する必要はありません。昇格された特権を必要とする特定のコマンドについては、スクリプト内からsudoを起動するだけです。 –