私はテーブルとフィールドの名前を変更して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"などはコマンドとして認識されません。