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