-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmors.sh
62 lines (54 loc) · 1.89 KB
/
mors.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/bash
#Fatih ÖNDER https://github.com/cektor
# Harfleri Mors koduna çeviren sözlük
declare -A morse_code=(
["A"]=".-" ["B"]="-..." ["C"]="-.-." ["D"]="-.." ["E"]="."
["F"]="..-." ["G"]="--." ["H"]="...." ["I"]=".." ["J"]=".---"
["K"]="-.-" ["L"]=".-.." ["M"]="--" ["N"]="-." ["O"]="---"
["P"]=".--." ["Q"]="--.-" ["R"]=".-." ["S"]="..." ["T"]="-"
["U"]="..-" ["V"]="...-" ["W"]=".--" ["X"]="-..-" ["Y"]="-.--"
["Z"]="--.." ["1"]=".----" ["2"]="..---" ["3"]="...--" ["4"]="....-"
["5"]="....." ["6"]="-...." ["7"]="--..." ["8"]="---.." ["9"]="----."
["0"]="-----"
)
# Mors kodundan harflere çeviren ters sözlük
declare -A text_code
for letter in "${!morse_code[@]}"; do
text_code[${morse_code[$letter]}]=$letter
done
while true; do
# Kullanıcıdan giriş alma
read -p "Metin veya Morse kodu girin (Morse kodu için her harfi boşlukla ayırın, kelime arası için '/'). Çıkmak için 'exit' yazın: " input
# Çıkış kontrolü
if [[ $input == "exit" ]]; then
echo "Çıkış yapılıyor..."
break
fi
# Girişin Morse kodu mu yoksa normal metin mi olduğunu belirleme
echo -ne "\e[32m" # Yeşil renk başlat
if [[ $input == *"."* || $input == *"-"* ]]; then
# Morse kodunu metne çevirme
IFS=' ' read -ra morse_chars <<< "$input"
for morse_char in "${morse_chars[@]}"; do
if [[ "$morse_char" == "/" ]]; then
echo -n " " # Kelime arası boşluk
else
echo -n "${text_code[$morse_char]}"
fi
done
echo # Satır sonu
else
# Normal metni Morse koduna çevirme
input=${input^^} # Büyük harfe dönüştür
for (( i=0; i<${#input}; i++ )); do
char="${input:$i:1}"
if [[ "$char" == " " ]]; then
echo -n " / " # Kelime arası boşluk
else
echo -n "${morse_code[$char]} "
fi
done
echo # Satır sonu
fi
echo -ne "\e[0m" # Renk sıfırla
done