linux bash shell error - error 条件表达式语法错误

linux bash shell error - error syntax error in conditional expression

我不明白这个总是给我的错误,你能帮我吗?

我正在做作业,这真的很重要,我从一大早开始就在想办法解决它


param0="KcgMy4kfBovoomVUcvtkxXqh1xosedAq";
param1="r2UmsEnodjLin2zT94M7eAX76vpB7gTe"; 
param2=97; 
output=""; 
f=0; 
for (( i=0, j=0; i<${#param0}, j<${#param1}; i++, j++ )); 
do c0=${param0:$i:1};
c1=${param1:$j:1}; 
renum="^[0-9]+$"; 
    if [[ $c0 =~ $renum && $c1=~ $renum ]]; 
        then param2=$((param2 - i - (c0 * c1)));
         if (( param2 < 1 )); 
             then param2=$((-1 * param2));
             f=$((!f)); 
        fi; 
        output+=${param2}; 
    else reupper="^[A-Z]+$";
        if [[ $f -eq 1 && $c0 =~ $reupper ]]; 
            then output+=${c0}; 
         else output+=${c1}${c0};
        fi; 
    fi;
 if [[ $c0 =~ $realpha && $c1 =~ $realpha ]]; 
 then reverse=""; 
 for ((k = ${#output} - 1; k >= 0; k--));
 do reverse=${reverse}${output:$k:1}; 
 done;
 output=$reverse;
 fi;
 done;
 echo ${output:0:32};

修复了在第二个正则表达式中缺少 space。

不要忘记使用 https://shellcheck.net/ 检查您的脚本或使用文本编辑器将其作为 plug-in。

修复了您的脚本:

#!/usr/bin/env bash

param0="KcgMy4kfBovoomVUcvtkxXqh1xosedAq"
param1="r2UmsEnodjLin2zT94M7eAX76vpB7gTe"
param2=97
output=""
f=0
for ((i = 0, j = 0; i < ${#param0}, j < ${#param1}; i++, j++)); do
  c0=${param0:i:1}
  c1=${param1:j:1}
  renum="^[[:digit:]]+$"
  if [[ $c0 =~ $renum && $c1 =~ $renum ]]; then
    param2=$((param2 - i - (c0 * c1)))
    if ((param2 < 1)); then
      param2=$((-1 * param2))
      f=$((!f))
    fi
    output+=${param2}
  else
    reupper="^[[:upper:]]+$"
    if [[ $f -eq 1 && $c0 =~ $reupper ]]; then
      output+=${c0}
    else
      output+=${c1}${c0}
    fi
  fi
  realpha="^[[:alpha:]]+$"
  if [[ $c0 =~ $realpha ]] && [[ $c1 =~ $realpha ]]; then
    reverse=""
    for ((k = ${#output} - 1; k >= 0; k--)); do
      reverse=${reverse}${output:k:1}
    done
    output=$reverse
  fi
done
printf %s\n ${output:0:32}