Giá trị vật:
c="a"
Để chuyển đổi nhân vật với giá trị ASCII của nó:
v=$(printf %d "'$c")
Giá trị bạn muốn thêm vào giá trị ASCII này:
add=1
Để thay đổi giá trị ASCII bằng cách thêm $ add vào nó:
((v+=add))
Để chuyển đổi kết quả để char:
perl -X -e "printf('The character is %c\n', $v);"
tôi đã sử dụng -X
để vô hiệu hóa tất cả các cảnh báo
Bạn có thể kết hợp tất cả trong số này trong một dòng và đặt kết quả trong vairable $ r:
c="a"; add=1; r=$(perl -X -e "printf('%c', $(($add+$(printf %d "'$c"))));")
bạn có thể in kết quả:
echo "$r"
Bạn có thể thực hiện một chức năng để trả lại kết quả:
achar()
{
c="$1"; add=$2
printf "$(perl -X -e "printf('%c', $(($add+$(printf %d "'$c"))));")"
}
bạn có thể sử dụng chức năng:
x=$(achar "a" 1) // x = the character that follows a by 1
hoặc bạn có thể tạo vòng lặp:
array=(a k m o)
for l in "${array[@]}"
do
echo "$l" is followed by $(achar "$l" 1)
done
bạn muốn điều gì xảy ra nếu đầu vào của bạn là z/Z? – Levon
trường hợp logic không hợp lệ này (tôi cần đến z hoặc Z !!!) –