Почему мой сценарий возвращает синтаксическую ошибку?

Я записал этот сценарий, но я не знаю, почему у меня есть синтаксическая ошибка:

#!/bin/bash
    echo Indica la fecha de hoy en formato dd-mm-aaaa
    read date
    echo Indica la hora actual en formato hh-mm
    read hora
    mkdir -p /re/plugins
    shopt -s extglob
    cp -R /files/spigot/plugins/!(dynmap) /re/plugins
    shopt -u extglob
    cp -R /files/spigot/world /re
    zip -r "$date"-"$hora".zip plugins world
    mv /re/*.zip /var/www/html/backup
    rm -R /re
    Echo copia de seguridad realizada correctamente el dia "$date" a las "$hora"h > /log.txt

Вывод

root@alex:/home/alex# sh pb.sh
Indica la fecha de hoy en formato dd-mm-aaaa
aaa
Indica la hora actual en formato hh-mm
sdf
pb.sh: 7: pb.sh: shopt: not found
pb.sh: 8: pb.sh: Syntax error: "(" unexpected
root@alex:/home/alex# 
1
задан 1 November 2015 в 00:22

2 ответа

Ваша проблема прямо здесь:

root@alex:/home/alex# sh pb.sh  

shopt встроенная оболочка (см. type shopt). /bin/sh не удар на Ubuntu, но оболочка совместимости, названная тире. Тире не имеет shopt.

, Так как первая строка Вашего сценария является строкой хижины (#!/bin/bash), можно просто запустить скрипт как это:

./pb.sh  

и это должно хорошо работать. Вы, возможно, должны установить файл как исполняемый файл путем выполнения:

chmod +x pb.sh
9
ответ дан 3 December 2019 в 06:19

pb.sh: 8: pb.sh: Синтаксическая ошибка: "(" неожиданный

!(dynmap) синтаксис только распознан, когда extglob опция оболочки была установлена, и это не имело:

pb.sh: 7: pb.sh: shopt: не найденный

Эти shopt команда не была найдена, потому что это - встроенная оболочка и конкретная оболочка, которая запустила скрипт, не поддерживает его, как , ответ Seth объясняет.

2
ответ дан 3 December 2019 в 06:19

Другие вопросы по тегам:

Похожие вопросы: