• shell命令编程小例


    程序目的:设计一个shell程序,分别实现1)锁定终端屏幕,2)选择文件编辑器编辑文件,3)启动您所想要启动的工具,4)使用C文件输出当地时间   四个功能

    程序分析:锁定终端屏幕过程需要忽略SIGHUP,SIGINT,SIGQUIT,SIGTERM,SIGTSTP信号,调用trap命令,然后设置一个密码,锁定终端屏幕,利用while循环检验解锁密码是否正确,不正确则一直循环,从而达到锁定终端屏幕的目的;选择文件编辑器编辑文件就是各种编辑器命令的调用;启动工具,例如firefox,可以使用which获得firefox可执行程序位置,再调用之即可;C文件输出当地时间,编译已经写好的代码,用shell调用可执行程序

    /*--------------------main-----------------------*/
    #!/bin/bash

    while true
    do

    echo  "1)锁定终端屏幕"
    echo  "2)选择文件编辑器编辑文件"
    echo  "3)启动您所想要启动的工具"
    echo  "4)使用C文件输出当地时间"
    echo  "5)退出"

    echo  -n "请输入您想要的操作编号:"
    read  num

    case $num in
    1) bash terminallock;;
    2) bash edit;;
    3) bash toolset;;
    4) ./checktime;;
    5) exit;;

    esac

    done

    /*--------------------terminallock-----------------------------*/

    #!/bin/bash
    #终端锁定工具

    secret()
    {
    #设置密码
    echo -n "请输入你的密码:"
    read firstpasswd
    echo

    #确认密码
    echo -n "请再次输入你的密码:"
    read secpasswd
    echo
    }


    #忽略SIGHUP,SIGINT,SIGQUIT,SIGTERM,SIGTSTP信号
    trap '' 1 2 3 15 20

    clear
    stty -echo

    secret

    while [ $firstpasswd != $secpasswd ]
    do
       clear
       echo "您输入的密码不一致,请重新设定"
       secret
    done

    clear
    echo -n "请输入您的密码:"
    read input
    echo

    #当用户输入密码与设定密码不一致时,则一直在while中循环
    while [ $firstpasswd != $input ]
    do
       clear
       echo -n "您输入的密码错误,请再次输入:"
       read input
    done
         
    clear
    echo "back again"
    stty echo
    exit 0

    /*----------------------------tooleset-----------------------*/

    #!/bin/bash

    echo -n "请输入您想要启动的工具:"
    read name
    str=which $name
    bash $str
    exit

    /*----------------------------checktime.c---------------------------*/

    #include <stdio.h>
    #include <time.h>
    int main()
    {
      time_t t;
      t=time(0);
      printf("%s\n",asctime(localtime(&t)));

    }

    /*----------------------------edit--------------------------------*/

    #!/bin/bash

    while true
    do

    echo "1)-----vi-------"
    echo "2)-----vim------"
    echo "3)-----pico-----"
    echo "4)-----gedit----"
    echo "5)-----emacs----"
    echo "6)-----quit-----"


    echo -n "请输入您想选择的编辑器编号:"
    read num

    case $num in
     1) vi;;
     2) vim;;
     3) pico;;
     4) gedit;;
     5) emacs;;
     6) exit;;
    esac


    done

    运行结果:

    king@ubuntu:~$ bash main
    1)锁定终端屏幕
    2)选择文件编辑器编辑文件
    3)启动您所想要启动的工具
    4)使用C文件输出当地时间
    5)退出
    请输入您想要的操作编号:1

    请输入你的密码:
    请再次输入你的密码:

    请输入您的密码:

    back again
    1)锁定终端屏幕
    2)选择文件编辑器编辑文件
    3)启动您所想要启动的工具
    4)使用C文件输出当地时间
    5)退出

    请输入您想要的操作编号:4
    Sat Sep 11 13:44:10 2010

    1)锁定终端屏幕
    2)选择文件编辑器编辑文件
    3)启动您所想要启动的工具
    4)使用C文件输出当地时间
    5)退出

    请输入您想要的操作编号:3
    请输入您想要启动的工具:firefox

  • 相关阅读:
    poj 2778 AC自己主动机 + 矩阵高速幂
    Web Services 指南之:Web Services 综述
    SQL多表连接查询(具体实例)
    HibernateUtil
    哈夫曼编码问题再续(下篇)——优先队列求解
    MySQL Merge存储引擎
    程序的入口及AppDelegate窗体显示原理
    几个免费的DNS地址
    kettle与各数据库建立链接的链接字符串
    【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
  • 原文地址:https://www.cnblogs.com/chuxiking/p/1823924.html
Copyright © 2020-2023  润新知