찾을 수 없는 오류 [닫음]

찾을 수 없는 오류 [닫음]

나는 테이블과 필드의 이름을 변경하여 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되므로 "s", "0" 등은 명령으로 인식되지 않습니다.

관련 정보