我收到此错误:
1
/home/nacion/mcparley/VentaParley.sh: line 163: unexpected EOF while looking for matching `"'
/home/nacion/mcparley/VentaParley.sh: line 166: syntax error: unexpected end of file
这是脚本:
#!/bin/sh
#
# screen -S bun -X stuff ""`echo -ne '\015'`
#
# CONSIDERACIONES
# CUANDO EL PAIS TIENE 2 PALABRAS, SE DEBEN UNIR ESAS PALABRAS
# SINO LO TOMA COMO UN REGISTRO EXTRA
#
# sudo bash /home/nacion/mcparley/VentaParley.sh [skw,sur2,sky2] [din/tok]
# sudo bash /home/nacion/mcparley/VentaParley.sh skw din
archivoComp="/home/nacion/$1/plugins/BossShop/shops/$2ApoComp.yml"
case "$2" in
din)
TipoMoneda="Money"
;;
tok)
TipoMoneda="Points"
;;
*)
echo "Error: Usar un numero"
esac
rm -rf $archivoComp
#Consultamos las competencias activas
compActivas=($(mysql -D parley --user=root -- ="easypassword" -s -N -e "Select ID, NombreCompetencia From Competencias Where Activa = \"1\";"))
echo "1"
if [ ${#compActivas[@]} -gt 0 ]
then
echo "3"
#Hay competencias activas
#Creamos el archivo de competencias y cargamos la cabecera
echo > "$archivoComp"
echo "ShopName: $2ApoComp" >> "$archivoComp"
echo "DisplayName: '&e&lSelecciona un torneo'" >> "$archivoComp"
echo "signs:" >> "$archivoComp"
echo " text: '[newshop]'" >> "$archivoComp"
echo " NeedPermissionToCreateSign: true" >> "$archivoComp"
echo "shop:" >> "$archivoComp"
echo " atras:" >> "$archivoComp"
echo " MenuItem:" >> "$archivoComp"
echo " - name:&e&lVolver al menu anterior" >> "$archivoComp"
echo " - amount:1" >> "$archivoComp"
echo " - type:NETHER_STAR" >> "$archivoComp"
echo " RewardType: Shop" >> "$archivoComp"
echo " Reward: lobDin" >> "$archivoComp"
echo " PriceType: Free" >> "$archivoComp"
echo " Price: 10.0" >> "$archivoComp"
echo " Message: ''" >> "$archivoComp"
echo " ExtraPermission: ''" >> "$archivoComp"
echo " InventoryLocation: 27" >> "$archivoComp"
#${compActivas[]}
N=0
cPos=1
for i in "${compActivas[@]}"
do
#El vector compActivas tendra ocupadas al menos 2 tuplas, en caso de que al menos exista 1 competencia activa
#Agregamos la competencia al archivo de archivoComp
echo " $2Comp${compActivas[$(($N))]}:" >> "$archivoComp"
echo " MenuItem:" >> "$archivoComp"
echo " - lore:&7Ver los partidos#&7Programados para hoy#En el torneo>#&b${compActivas[$(($N+1))]}" >> "$archivoComp"
echo " - name:&e&l${compActivas[$(($N+1))]}" >> "$archivoComp"
echo " - amount:1" >> "$archivoComp"
echo " - type:DIAMOND" >> "$archivoComp"
echo " RewardType: Shop" >> "$archivoComp"
echo " Reward: $2Comp${compActivas[$(($N))]}" >> "$archivoComp"
echo " PriceType: Free" >> "$archivoComp"
echo " Price: 10.0" >> "$archivoComp"
echo " Message: ''" >> "$archivoComp"
echo " ExtraPermission: ''" >> "$archivoComp"
echo " InventoryLocation: $cPos" >> "$archivoComp"
#Asignamos el archivo nuevo al que se agregaran los partidos disponibles
archivoApoComp="/home/nacion/$1/plugins/BossShop/shops/$2Comp${compActivas[$(($N))]}.yml"
#Lo borramos y reconstruimos para asegurarnos de una copia limpia
rm -rf $archivoApoComp
echo > "$archivoApoComp"
#Ya creamos el item que aparecera en el menu de competencias activas
#Buscamos los partidos programados para la fecha, pertenecientes a esta competencia
# IDS de partidos del dia que aun no han cerrado
# Se cierran 1 hora antes que inicie el partido, en el peor de los casos, por una mala sincronizacion, se cerraran maximo a 30 min de empezar
IDSPartidos=($(mysql -D parley --user=root -- ="easypassword" -s -N -e "Select ID From Partidos Where Fecha = CURDATE() and DATE_ADD(NOW(), INTERVAL 2 HOUR) < CONCAT(Fecha,' ',Hora) and Competencia = \"${compActivas[$(($N))]\";"))
pPos=0
if [ ${#IDSPartidos[@]} -eq 0 ];
then
echo "No hay partidos disponibles para el dia de hoy para la competencia ${compActivas[$(($N))]"
else
echo "Se encontraron partidos disponibles para hoy, iniciando procedimiento de venta"
for i in "${IDSPartidos[@]}"
do
let "pPos= $pPos + 1"
# Consultamos los datos de cada apuesta
resultado=($(mysql -D parley --user=root -- ="easypassword" -s -N -e "Select * From Partidos Where ID = \"$i\";"))
Logro="${resultado[4]}"
if [ $Logro -gt 0 ] #Es el positivo o "batacazo" paga mas
then
Favorito="&cNO"
# Usamos bc que es la calculadora, y se pueden usar decimales
# Cambio de 100 a 200 el divisor de este, ya que la ganacia seria mucha
Ganancia=$(bc <<< "scale = 2; ((($Logro/100)+1)*100)-100")
# quitamos los decimales
Ganancia=${Ganancia/.*/}
else # Es el negativo o favorito Paga menos
Favorito="&aSI"
Logro=$(($Logro*-1))
# Ganancia=$((((100/$Logro)+1)*100))
Ganancia=$(bc <<< "scale = 2; (((100/$Logro)+1)*100)-100")
# echo "$Ganancia"
Ganancia=${Ganancia/.*/}
fi
#Cargamos el archivo de los partidos para esta competencia
echo " Apuesta$i:" >> "$archivoApoComp"
echo " MenuItem:" >> "$archivoApoComp"
echo " - lore:&7Datos del Partido#&7Fecha>&b ${resultado[1]}#&7Hora>&b ${resultado[2]} (-3 GMT Hora Argentina)#&7ID>&b ${resultado[0]}#&7Logro>&b ${resultado[4]}#&7Torneo> &b${resultado[5]}#&7*LNC-Apuestas*#&dGanancia>#&7Por cada 100$ Ganas> &b$Ganancia$#&eClick Aqui para comprar un boleto de apuesta#&eCompra todos los que quieras" >> "$archivoApoComp"
echo " - name:&b&l100 &7&la &c&l${resultado[3]}" >> "$archivoApoComp"
echo " - amount:1" >> "$archivoApoComp"
echo " - type:PAPER" >> "$archivoApoComp"
echo " RewardType: Item" >> "$archivoApoComp"
echo " Reward:" >> "$archivoApoComp"
echo " - lore:&7Fecha Juego> &b${resultado[1]}#&7Hora Juego> &b${resultado[2]} &7(-3 GMT) Hora Argentina#&7Moneda> &b$2#&7IDPartido> &b${resultado[0]}#&7Competencia> &b${resultado[5]}" >> "$archivoApoComp"
echo " - name:&c&lApuesta de 100 al equipo ${resultado[3]}" >> "$archivoApoComp"
echo " - amount:1" >> "$archivoApoComp"
echo " - type:PAPER" >> "$archivoApoComp"
echo " PriceType: $TipoMoneda" >> "$archivoApoComp"
echo " Price: 100.0" >> "$archivoApoComp"
echo " Message: '&eApostaste 100 por> &c${resultado[3]}&e para el dia> &b${resultado[1]}&e a las> &b ${resultado[2]} (-3 GMT Hora Argentina) &7en el torneo> &b${resultado[5]}'" >> "$archivoApoComp"
echo " ExtraPermission: ''" >> "$archivoApoComp"
echo " InventoryLocation: $pPos" >> "$archivoApoComp"
done
fi
let "N= $N + 1"
done
else
#No hay competencias activas
echo "No hay competencias activas"
fi
echo "2"
#Recargamos el boss
screen -S $1 -X stuff "bs reload"`echo -ne '\015'`
exit 0
答案1
IDSPartidos=($(mysql -D parley --user=root -- ="easypassword" -s -N -e "Select ID From Partidos Where Fecha = CURDATE() and DATE_ADD(NOW(), INTERVAL 2 HOUR) < CONCAT(Fecha,' ',Hora) and Competencia = \"${compActivas[$(($N))]}\";")
在该行的末尾,您缺少一个 }。这是回来的第六个角色。