未找到错误

未找到错误

我编写了这个脚本,通过更改表和字段的名称来编码/加密来自 sql 查询的数据(我使用的是 ASCII 字符代码)。

#! /bin/bash

chr() {
  [ "$1" -lt 256 ] || return 1
  printf "\\$(printf '%03o' "$1")"
}

ord() {
  LC_CTYPE=C printf '%d' "'$1"
}

read -p "saisir votre requete: "  req
printf "%s\n" "$req" > t1.txt

sed -e 's/[;,()'\'']/ /g;s/  */ /g' t1.txt > t.txt

while read line; do 
   for word in "${line[@]}"; do 
    if ! [[ "$word" =~ $(echo ^\($(paste -sd'|' ./req.txt)\)$) ]]; then
     str=$word
     for i in $(seq 1 ${#str}); do
     car=$(echo $(echo $str | cut -c$i))
      x=$(ord "$car")
     let "x= (((x/2) * 3) + 1)"
     var=$(chr "$x")
     echo $str  |  sed "s/\$car/\$var/g"
     done
     sed -i -e "s/$word/$str/g" t1.txt 
     str=""

   fi; 
  done 

done < t1.txt

该文件req.txt包含诸如选择、插入、更新等每个请求之类的单词。

我执行了脚本,但终端挂起并根据字符数显示每个单词:

Expl: from 显示了 4 次

答案1

如果您想要分配命令或函数的输出值,请使用以下语法:

 x=$(ord "$car")
 var=$(chr "$x")

(您遇到的错误是因为您使用的语法,例如x=ord $car,将执行以下操作:变量x将被分配字符串"ord",然后该变量x可用于后续命令的环境$car;但扩展的$car不是命令,所以你会得到“s”、“0”等不被识别为命令的错误。)

相关内容