我的bash脚本出现以下错误。
ncompile.sh: 1: ncompile.sh: ###: not found
ncompile.sh: 52: ncompile.sh: [[: not found
Chose your Operating System. {Supported OS: Debian, Ubuntu, Fedora, CentOS, FreeBSD}
Debian
ncompile.sh: 61: ncompile.sh: [[: not found
ncompile.sh: 61: ncompile.sh: [[: not found
ncompile.sh: 70: ncompile.sh: [[: not found
ncompile.sh: 70: ncompile.sh: [[: not found
ncompile.sh: 79: ncompile.sh: [[: not found
Pick a valid OS
使用此脚本:
###
### Functions to simplify stuff :)
###
debianDeps() {
apt-get install git cmake build-essential liblua5.2-dev \
libgmp3-dev libmysqlclient-dev libboost-system-dev
}
fedoraDeps() {
yum install git cmake gcc-c++ boost-devel \
gmp-devel community-mysql-devel lua-devel
}
bsdDeps() {
cd /usr/ports/shells/bash && make install clean BATCH=yes
cd /usr/ports/devel/git && make install clean BATCH=yes
cd /usr/ports/devel/cmake && make install clean BATCH=yes
cd /usr/ports/lang/gcc47 && make install clean BATCH=yes
cd /usr/ports/lang/luajit && make install clean BATCH=yes
cd /usr/ports/devel/boost-libs && make install clean BATCH=yes
cd /usr/ports/math/gmp && make install clean BATCH=yes
cd /usr/ports/databases/mysql-connector-c && make install clean BATCH=yes
}
libInstall() {
echo "Libraries and Build Tools... Installed"
}
bsdBuild() {
echo "Building on FreeBSD"
mkdir build && cd build
CXX=g++47 cmake ..
make
}
genBuild() {
echo "Building..."
mkdir build && cd build
cmake ..
make
}
clean() {
mv *.cpp *.h src/ && mv *.o objs/
echo "There might be a few leftover files."
}
###
### Script starts here
###
if [[ $EUID -ne 0 ]]; then
echo "You must be root to use this script, press enter to exit."
read end
exit 1
fi
echo "Chose your Operating System. {Supported OS: Debian, Ubuntu, Fedora, CentOS, FreeBSD} "
read ans1
if [[ $ans1 = "Fedora" ]] || [[ $nas1 = "CentOS" ]]; then
echo -n "Should the script install dependencies? y/n"
if [[ $ans1_1 = "y" ]]; then
fedoraDeps
elif [[ $ans1_1 = "n" ]]; then
break
else
echo "Answer '\y\' or \'n\' "
fi
elif [[ $ans1 = "Debian" ]] || [[ $ans1 = "Ubuntu" ]]; then
echo -n "Should the script install dependencies? y/n"
if [[ $ans1_1 = "y" ]]; then
debianDeps
elif [[ $ans1_1 = "n" ]]; then
break
else
echo "Answer '\y\' or \'n\' "
fi
elif [[ $ans1 = "FreeBSD" ]]; then
echo -n "Should the script install dependencies? y/n"
if [[ $ans1_1 = "y" ]]; then
bsdDeps
elif [[ $ans1_1 = "n" ]]; then
break
else
echo "Answer '\y\' or \'n\' "
fi
else
echo "Pick a valid OS"
fi
答案 0 :(得分:5)
你应该从第一行插入bash she-bang开始:
#!/bin/bash
我认为您的脚本基本上使用sh
。 shell仅支持简单括号([
)。
答案 1 :(得分:0)
变量ans1_1未读取,您必须在使用之前“读取ans1_1”