Vysvětlení a komentáře jsou součástí předchozího článku.
Projekty_www/phpBB3-docs/test-search-wrods3.sh
#!/bin/bash
declare -A results=() # Deklarace asociativního pole pro ukládání výsledků
# Funkce pro prohledání slov v textu
search_words() {
local sql_array="$1"
local query="$2"
local words=("${@:3}")
sql_array=$(echo "$sql_array" | sed -e 's/^[ \t]*//') # Trim begin of the lines
# Vytvoření pole slov s query na prvním místě
local all_words=("$query" "${words[@]}")
# Procházení slov a hledání jejich výskytu v stringu
for word in "${all_words[@]}"; do
result=$(echo "$sql_array" | awk -v word="$word" '$0 ~ word {print NR; exit}')
read -p "WORD:$word RESULT:$result searched in sql_array"
# Pokud není nalezen žádný výskyt, nastavíme výsledek na 0
if [ -z "$result" ]; then
result=0
fi
# Uložení výsledku pod klíčem slova
results["$word"]="$result"
done
# Vrácení asociativního pole výsledků
# echo "${results[@]}"
}
# Hlavní kód
clear
sql_array="
'SELECT' => 'f.*',
'FROM' => array(
FORUMS_TABLE => 'f'
),
'LEFT_JOIN' => array(),
'ORDER_BY' => 'f.left_id',
'WHERE' => 'f.id = 1'
"
# Pole se slovy, která hledáme
words=("FROM" "LEFT_JOIN" "ON" "WHERE")
# Volání funkce pro prohledání slov
search_words "$sql_array" "SELECT" "${words[@]}"
# Vypsání výsledků
for word in "${!results[@]}"; do
echo "WORD:$word RESULT:${results[$word]} searched in sql_array"
done
# Oddělení pro přehlednost
echo "--------------"
# Vypsání výsledků v očekávaném formátu
echo "SELECT:${results[SELECT]}"
echo "FROM: ${results[FROM]}"
echo "LEFT_JOIN: ${results[LEFT_JOIN]}"
echo "ON: ${results[ON]}"
echo "WHERE: ${results[WHERE]}"
Žádné komentáře:
Okomentovat