分类: LINUX
2011-07-23 19:35:27
今天写了几个脚本,简单而且比较有意思。学习shell脚本没有别的方法,只有不断地练习摸索总结,你才可能学会,在学习的过程中你才能在shell脚本的世界里找到乐趣,兴趣是最好的老师。那现在就开始我们的旅程吧!
1.编写一个自动写开头信息的脚本,我们都知道每次写一个脚本,必须输入#!/bin/bash,或许你还会写一些注释信息,每次都得输入,真的很麻烦,那该怎么办呢?有没有方法让我可以不用每次都写。其实是有的。我们可以了利用重定向的方法,例如:cat > $1 << eof,你还记得$1是什么吗?举个简单的例子吧,比如你vi a.sh,那$1就是a.sh。就是取命令后面的第一个参数,现在明白了吧。因此我们可以编写脚本vi.sh 能够被其他脚本所调用。
#!/bin/bash
#!/bin/bash
#this program used to
#History: hanlenry first release
eof
vi $1
到此这个脚本就完成了,你可以把它放到命令的路径下并重新命名为Vi,如/usr/bin/Vi,以后我每次执行Vi filename,则filename就自动出现上面的信息。例如,我创建一个脚本a.sh,使用Vi,注意是大写的V,这是我们自己定义的,使用Vi a.sh。如图
就会自动出现我们想要的信息,为我们减轻了负担,是不是感觉脚本可好了。哈哈!
2.编写一个脚本实现下列功能;
1.脚本能够接受两个参数
2.显示一个菜单选项有1,加法,2减法,3,乘法4,除法
3.在用户做出正确的选择后,进行运算,便返回结果。
首先大家思考一下如何写?如果你写出来了,祝贺你。我只是提供一种写法,每个人的习惯都不一样,因此,我写的也仅供大家参考,关键还是看自己。废话少说,来开始吧!
我们可以使用上一题的Vi,例如创建一个名为math.sh的脚本。使用命令Vi math.sh。
好了,接下来只需要输入正文部分的命令就可以了,不用再输入#!/bin/bash等信息了。好了,我开始写喽。
echo –e “========================”
echo –e “= 1.jia 2.jian 3.cheng 4.chu =
echo –e “========================”
read –p “please choose the num:” N
read –p “please input your first num:” A
raad –p “please input your second num:” B
if [ $N == 1 ];then
echo –e “the sum is :$[$A+$B]”
elif [ $N == 2 ];then
echo –e “the cha is :$[$A-$B]”
elif [ $N == 3 ];then
echo –e “the ji is : $[$A*$B]”
elif [ $N == 4 ];then
echo –e “the shang shi: $[$A/$B]”
fi
我们来运行一下,看一下结果。
是不是感觉很棒!每编写一个脚本,当执行成功时,就会有无穷无尽的成就感。这其实跟有利于我们学习。
3.用户输入以用户名,判断用户是否存在,如果不存在,则告诉用户,此用户名不存在,并创建该用户;如果存在,则判断此用户的类型,并显示出来。
在这里我们可以用if来判断,用户名的存在,也可以用&&和|| 来编写,那我就用&&和|| 来判断用户的存在与否,其实用if更简单。之前的细节我就不再多说了,来讲重点。
read –p “please input the user:” user
grep “^$user” /etc/passwd &> /dev/null && echo –e “the $user is exsit.”|| echo –e “$user is not exist,we will creat it,`useradd $user`”
I=`id –u $user`
if [ “$I” == 0 ];then
echo –e “$user is administrator”
elif [ “$I” –lt 500 ];then
echo –e “$user is system user”
else
echo –e “$user is ordinary user”
fi
tail -2 /etc/passwd
Ok,搞定了,我在这里说明一下if中的判断条件,数值判断中,不能直接用>或<来表示。==表示等于,-lt是表示小于,-le表示小于等于;-gt表示大于,-ge表示大于等于。运行一下,结果为:
其中有root,用户显示是administrator,新建一个aaaa用户,是一般用户,ftp 是系统用户
我们知道root的uid是0,系统用户是:1-499,普通用户是:500-65535,我们根据的就是id号来判断他们的类型的。