首页 > 系统相关 >Linux Shell: 写程序 背单词

Linux Shell: 写程序 背单词

时间:2023-12-23 14:00:32浏览次数:44  
标签:pre Shell word english echo Linux 033 root 背单词

网上下载了一个英语词根和英语单词文件,包含导入到数据库的sql语句:english-root.sqlenglish_word.sql,于是写个脚本辅助背单词。

脚本

脚本逻辑:通过随机数获得词根编号,取得词根,过滤出其中的词根字符,并从数据库中提取以这些词根字符开头的单词。
脚本操作:接收一个传入参数,指定一次从数据库中提取单词的最大值,缺省值20; 按回车,随机下一个词根,提取单词了;按a,显示上一个词根及单词。

#!/bin/bash                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                  
num=${1:-20}                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                  
p_word()                                                                                                                                                                                                                                                                          
{                                                                                                                                                                                                                                                                                 
        clear                                                                                                                                                                                                                                                                     
        echo -e "Today is the \033[1m\033[4m`date +%u`\033[0m day of week, the \033[1m\033[4m`date +%V`\033[0m week and \033[1m\033[4m`date +%j`\033[0m day of this year. "                                                                                                       
                                                                                                                                                                                                                                                                                  
        tput cup 2 0                                                                                                                                                                                                                                                              
        echo -e "Current Time: \033[36m\033[1m`date +%T`\033[0m"                                                                                                                                                                                                                  
        echo                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                  
        echo -e "\e[42m => $word_root \e[0m"                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                  
        pre=`echo $word_root | sed 's/[一-龥]//g' | tr -d ','`                                                                                                                                                                                                                   
        pre_len=`echo $pre | awk -F '[,=]' '{print NF}'`                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                  
        [ 1 -le $pre_len ] && {                                                                                                                                                                                                                                                   
            pre_=`echo "$pre" | awk -F '[,=]' '{print $1}'`                                                                                                                                                                                                                       
            echo "- $pre_"                                                                                                                                                                                                                                                        
            mysql -e "select word,explains from english.eng_words where word like '${pre_}%' limit $num;"                                                                                                                                                                         
        }                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                  
        [ 2 -le $pre_len ] && {                                                                                                                                                                                                                                                   
            pre_=`echo "$pre" | awk -F '[,=]' '{print $2}'`                                                                                                                                                                                                                       
            echo "- $pre_"                                                                                                                                                                                                                                                        
            mysql -e "select word,explains from english.eng_words where word like '${pre_}%' limit $num;"                                                                                                                                                                         
        }                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                  
        [ 3 -le $pre_len ] && {                                                                                                                                                                                                                                                   
            pre_=`echo "$pre" | awk -F '[,=]' '{print $3}'`                                                                                                                                                                                                                       
            echo "- $pre_"                                                                                                                                                                                                                                                        
            mysql -e "select word,explains from english.eng_words where word like '${pre_}%' limit $num;"                                                                                                                                                                         
        }                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                  
        [ 4 -le $pre_len ] && {                                                                                                                                                                                                                                                   
            pre_=`echo "$pre" | awk -F '[,=]' '{print $4}'`                                                                                                                                                                                                                       
            echo "- $pre_"                                                                                                                                                                                                                                                        
            mysql -e "select word,explains from english.eng_words where word like '${pre_}%' limit $num;"                                                                                                                                                                         
        }                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                  
        tput civis # 光标不可见                                                                                                                                                                                                                                                   
        sleep 1 # 等待1秒                                                                                                                                                                                                                                                         
}                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                  
random_number=$(( RANDOM % 252 + 1 ))                                                                                                                                                                                                                                             
word_root=`mysql -e "select root from english.eng_root where id=$random_number;" |tail -1 `                                                                                                                                                                                       
p_word                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                  
while : ; do                                                                                                                                                                                                                                                                      
        read -n 1 input                                                                                                                                                                                                                                                           
        if [[ $input == "" ]]; then                                                                                                                                                                                                                                               
                lw=$word_root                                                                                                                                                                                                                                                     
                random_number=$(( RANDOM % 252 + 1 ))                                                                                                                                                                                                                             
                word_root=`mysql -e "select root from english.eng_root where id=$random_number;" |tail -1 `                                                                                                                                                                       
                p_word                                                                                                                                                                                                                                                            
        elif [[ $input =~ "a" ]] ; then                                                                                                                                                                                                                                           
                word_root=$lw                                                                                                                                                                                                                                                     
                p_word                                                                                                                                                                                                                                                            
        fi                                                                                                                                                                                                                                                                        
done

标签:pre,Shell,word,english,echo,Linux,033,root,背单词
From: https://www.cnblogs.com/dewan/p/17923072.html

相关文章

  • archlinux virtualbox 使用usb
    参照https://linux.cn/article-15287-1.html1.安装virtualbox扩展包(1)从archlinuxcn社区库安装sudopacman-Svirtualbox-ext-oracle该包的描述为OracleVMVirtualBoxExtensionPack(2)或者从virtualbox官网中下载扩展包OracleVMVirtualBoxExtensionPack再在virtu......
  • 软件测试/测试开发|Linux sed命令详解
    sed命令介绍sed是streameditor(流编辑器)的简写,sed可依照脚本的指令来处理、编辑文本文件。Sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。sed命令语法基本语法:sed[选项]'动作'文件名常用参数-n,--quiet,--silent取消自动打印模式空间-e......
  • linux 操作系统基础
    1、ls-列出目录内容。ls-l:以详细列表形式显示文件和目录的权限、所有者、大小等信息。ls-a:显示所有文件和目录,包括隐藏文件(以点开头的文件)。2、cd-切换目录。cd/home:切换到/home目录。cd..:返回上一级目录。cd~:返回当前用户的主目录。3、pwd-显示当前目录的路径。4、mkdi......
  • ESP-IDF的PowerShell窗口有时无法打开
    ESP-IDF的PowerShell窗口有时无法打开可能是由于多种原因引起的。以下是一些可能的解决方案:检查网络连接:确保您的计算机与互联网正常连接,并且没有任何防火墙或代理服务器阻止了PowerShell的访问。重启计算机:有时候,重新启动计算机可以解决临时的软件问题。尝试重新启动计算机......
  • linux基础01----命令集锦
    Linux命令集锦:一、关机&重启命令:   sync:把内存的数据同步到磁盘,当我们关机或者重启时,都应该先执行下sync命令,把内存的数据写入磁盘,防止数据丢失。   shutdown-hnow:表示立即关机   shutdown-h 1:表示1分钟后关机    shutdown-rnow:立即重启 ......
  • linux-firewalld 和iptable的策略配置(nat 以及端口开放)
    一、配置防火墙开发端口1、sudoyuminstallfirewalldsudosystemctlstartfirewalldsudosystemctlenablefirewalld2、配置防火墙规则firewall-cmd--permanent--add-service=sshfirewall-cmd--permanent--add-service=httpfirewall-cmd--permanent......
  • linux基础002-----环境搭建1
    一、               vimtools安装    在终端输入gcc-v如果显示gcc的版本说明安装了gcc  之后一直回车          关闭系统后,在虚拟机中找到要克隆的系统,右键---管理---克隆,选择克隆的位置(选择大的磁......
  • 启用/禁用触摸板的shell脚本
    在笔记本上使用xfce时,不能正确识别厂商设定的fn功能键,禁用触摸板的功能失效了。在KDE或其它“重量级”桌面环境中基本都能正确识别,而且可以设置在插入外接鼠标时禁用触摸板,但是xfce太简陋了,有些功能是缺失的。比较坑的是,它可以正确识别调节背光和音量的功能键,独独缺了禁用触......
  • linux-网卡配置
    一、网络配置iplinkshow查看网卡配置setens33up/down网卡的开启关闭iplinkadd/up添加/删除网卡为网络设备添加协议地址ipaddress192.168.10.1/24brocase二、添加网卡并配置网络1、在linux虚拟机上新添加一个网卡2、进入终端网卡配置界面cd/etc/s......
  • linux系统僵尸进程处理
    查看僵尸进程[root@mac-25~]#toptop-19:04:11up177days,23:58,2users,loadaverage:15.18,21.64,22.02Tasks:1791total,2running,1347sleeping,0stopped,43zombie%Cpu(s):30.7us,5.9sy,0.0ni,57.7id,0.3wa,0.9hi,4.4si,0......