Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用了Linux/Unix下的命令。在这里与大家分享下几个经典的脚本。
指导老师:双星 冯德勇老师 曾勇老师 葛老师
1.模拟登陆shell
=================================================================
i=0
登陆次数的控制
login_shell(){
引入c语言函数概念
echo -n -e "login\n"
read name
人机交互
echo -n -e "password\n"
read passwd
if [ $name= "root" -a $passwd ] ;then
判断
echo "welcome to Centos!"
else
echo "please train again!"
(( i=$i+1 ))
if [ $i -eq 3 ];then
exit 1
fi
login_shell
fi
}
main(){
主函数调用
login_shell
}
main
==================================================================
语句释义:
echo
-n 换行且光标移至行首
-e 处理特殊字符
判断语句
if [ 判断条件 ];then
成功之后执行的语句
else
不成功执行的语句
fi
*********************************************************************************************
2.点歌程序
================================================================
首先创建song这个目录
a=song
名单存放地方
line=`cat /example/song | grep wc -l `
名单里的人数
if [ $line -eq 0 ];then
文件处理
cp file $a
rm -rf file
exit 0
fi
echo " 还有$line 个同学没唱歌,明天唱歌的是:"
ran=$(( $RANDOM%$line+1 ))
产生随机数
sed -n "$ran p" $a
sed -n "$ran p " $a >>file
sed -i "$ran d" $a
===================================================================
************************************************************************************************************
3.10的阶层和1到100的和
===================================================================
sum=0
for i in `seq 10`
do
let sum*=i
done
echo $sum
k=0
for j i `seq 100`
do
let k+=j
done
echo $k
=======================================================================
echo `seq 10` 就是打印1 2 3 4 5 6 7 8 9 10
**********************************************************************************************************
4.打印出两个不同文件内
=======================================================================
在此之前要创建file1 和file2
grep -xf file1 file2 -v >file3
========================================================================
-f 指定以文件为对象比较
-v 取反
*************************************************************************************************************
5.在a="01234567"中随机取两个数,并且按顺序和倒序打印
a="01234567"
b=$(( $RANDOM%${#a} ))
产生随机数
c=${a:b:1}
匹配a中第b个开始打印后面一位
a=${a/$c/}
b=$(( $RANDOM%${#a} ))
echo -n $c; echo ${a:b:1}
echo -n ${a:b:1} ; echo $c
这里就只分享了这个几个脚本,如果还有什么好的脚本请联系我,我们一起研究讨论。
QQ 714083947
心得:多写 多练 多思考 脚本不是问题,就是块垫脚石!