見つからないエラー[閉じる]

見つからないエラー[閉じる]

私はテーブルとフィールドの名前を変更して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:4番から表示

答え1

コマンドまたは関数の出力値を割り当てるには、次の構文を使用します。

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

(あなたが経験しているエラーは、たとえば、使用中の構文が次のように行われるためにx=ord $car発生します。変数にx文字列が割り当てられ、"ord"その後xのコマンドのコンテキストで使用できます。$carただし、これはコマンドではありません$car。 0"などはコマンドとして認識されません。

関連情報