Chuyển đổi sang chữ hoa có thể được thực hiện trong Bash bằng cách sử dụng:
VĂN BẢN="foobar"
tiếng vang ${TEXT^^}
Một mật mã xoay vòng có thể được thực hiện bằng cách sử dụng tr
, ví dụ: rot13:
tiếng vang $TEXT | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# sbbone
rot5 sẽ trông như thế này:
tiếng vang $TEXT | tr 'A-Za-z' 'F-ZA-Ef-za-e'
# kttgfw
Một phần phiên bản không có tr
chỉ huy:
#!/bin/bash
VĂN BẢN = "AZ"
for (( i=0; i<${#TEXT}; i++ )); làm
printf "%s -> %d\n" "${TEXT:$i:1}" \'${TEXT:$i:1}
printf -v val "%d" \'${TEXT:$i:1}
đã dịch chuyển=$(($val + 5))
tiếng vang "đã dịch chuyển: $ đã dịch chuyển"
printf "\$(printf '%03o' $shifted)\n"
# A-Z nằm trong khoảng:
#65-90
nếu [[ $shifted -gt 90 ]];thì
# nếu giá trị lớn hơn chữ Z bạn cần trừ 26
# để 91 trở thành chữ A
tiếng vang "$ shifted val quá lớn"
đã sửa=$(( $shifted - 26))
echo "giá trị ord đã sửa $đã sửa"
printf "\$(printf '%03o' $đã chỉnh sửa)\n"
fi
xong
đầu ra sẽ giống như:
Một -> 65
chuyển: 70
F
Z -> 90
dịch chuyển: 95
_
95 val quá lớn
giá trị ord đã sửa 69
e
Tập lệnh chuyển đổi các chữ cái thành mã ASCII tương ứng của nó, thực hiện dịch chuyển và chuyển đổi mã trở lại các chữ cái. Bạn cần đảm bảo rằng nó hoạt động đối với chữ hoa và chữ thường (hoặc chỉ hỗ trợ một trong số chúng). Tôi sẽ để phần còn lại như một bài tập cho độc giả tử tế.