SHELL编程(利用ascll码值)从键盘输入一个小写英文字母,将其转换为大写英文字母

从键盘输入一个小写英文字母,将其转换为大写英文字母利用ascll值来做


#!/bin/bash
echo "SHELL编程(利用ascll码值)从键盘输入一个小写英文字母,将其转换为大写英文字母!"
echo "从键盘输入一个小写英文字母,将其转换为大写英文字母利用ascll值来做!"
echo "请输入一个小写的英文字母:"
# "-n 仅能输入一个字符,-t 限制时间为5s,-s 输入的不显示"
read -n 1 -t 5 -s x
echo $x
awk -v t=$x;
case $x in
    "a")
        echo "A";;
    "b")
        echo "B";;
    "c")
        echo "C";;
    "d")
        echo "D";;
    "e")
        echo "E";;
    "f")
        echo "F";;
    "g")
        echo "G";;
    "h")
        echo "H";;
    "i")
        echo "I";;
    "j")
        echo "J";;
    "k")
        echo "K";;
    "l")
        echo "L";;
    "m")
        echo "M";;
    "n")
        echo "N";;
    "o")
        echo "O";;
    "p")
        echo "P";;
    "q")
        echo "Q";;
    "r")
        echo "R";;
    "s")
        echo "S";;
    "t")
        echo "T";;
    "u")
        echo "U";;
    "v")
        echo "V";;
    "w")
        echo "W";;
    "x")
        echo "X";;
    "y")
        echo "Y";;
    "z")
        echo "Z";;
    *)
        echo "input err."
esac

做了一会儿,发现这道题需要解决的关键难点便是如何用shell将输入进来的字符(串)转换成整数,然后进行相加减,虽然字符本来就是小整数,但是做着你可能会发现报这个错:test: s: integer expression expected,也就是期望是整数,我用了以下 awk,没做出来,你可以试试;最后用了穷举,可能没利用到ASCII,如果博主有更好的答案,欢迎告知我,谢谢,还有一个思路就是写一个c文件,然后用shell脚本来操作这个c文件,传一个参数进去得出结果,另外,据我所知,shell本来就是用来操作各种文件的,也不知道那位大佬想出了这个"妖魔鬼怪"(😂)


#include <stdio.h>
//编程从键盘输入一个小写英文字母,将其转换为大写英文字母,将转换后的大写英文字母及其十进制的ASCII码值显示在屏幕上。
int main(void)
{
    printf("请输入一个小写字母:\n");
    char a,b;
    scanf("%c",&a);
    if(a>='a'&&a<='z')
    {
        b = a-32;
    }
    else
        printf("输入有误!\n");
        
    printf("大写英文字母为:%c\n",b);
    printf("对应十进制ASCII码为:%d\n",b);
    return 0;
}