语法错误,意外令牌......导致这种情况的原因是什么?

时间:2013-07-11 14:04:15

标签: linux bash ssh

我使用SSH Secure Shell连接到Linux机器...当我尝试运行我的脚本时,我不断收到这些错误......

[grt@vm]MODE  : D
DATE  : 200806
bash: line 94: syntax error in conditional expression: unexpected token `('
bash: line 94: syntax error near `+(['
bash: line 94: `        if [ ${#Date} -ne 6 ] || [[ "$Date" != +([0-9]) ]] '

我的命令:

ssh grt@$10.*.*.*  'bash -s' < purge.sh $1 $2

我遇到此错误的代码的几行......:

Date="$2"
if [ ${#Date} -ne 6 ] || [[ "$Date" != +([0-9]) ]] 
then 
        echo "Erreur  : $2 - Format date incorrect"
        echo "Usage   : AAAAMM - date composée de 6 chiffres (4 pour l'année et 2 pour le mois)"
        echo "Exemple : $0 D 200806"
        exit 3
fi

bash: line 118: syntax error in conditional expression: unexpected token `('
bash: line 118: syntax error near `+(['
bash: line 118: `       if [[ "$NbMois" != +([0-9]) ]] || [ "$NbMois" -lt 0 ] || [ "$NbMois" -gt 99 ]'

我遇到此错误的代码的几行......:

NbMois="$2"
if [[ "$NbMois" != +([0-9]) ]] || [ "$NbMois" -lt 0 ] || [ "$NbMois" -gt 99 ]
then
    echo "Erreur  : $2 - Nombre de mois incorrect"
    echo "Usage   : Entier numérique compris entre 0 et 99"
    echo "Exemple : $0 N 14"
    exit 3
fi

2 个答案:

答案 0 :(得分:2)

远程计算机有旧版本的bash。您必须通过在脚本中添加以下行来启用扩展模式:

shopt -s extglob

答案 1 :(得分:0)

bash中的reqex运算符是=~

Date="$2"
if [[ ! "$D" =~ ^[0-9]{6}$ ]];then
then 
    echo "Erreur  : $2 - Format date incorrect"
    echo "Usage   : AAAAMM - date composée de 6 chiffres (4 pour l'année et 2 pour le mois)"
    echo "Exemple : $0 D 200806"
    exit 3
fi