Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304174
  • 博文数量: 58
  • 博客积分: 2763
  • 博客等级: 少校
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 19:07
文章分类

全部博文(58)

文章存档

2011年(55)

2009年(1)

2008年(2)

分类: 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

   cat >  $1  << eof

#!/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 是系统用户

我们知道rootuid0,系统用户是:1-499,普通用户是:500-65535,我们根据的就是id号来判断他们的类型的。

 

 

阅读(1613) | 评论(0) | 转发(0) |
0

上一篇:RPM深入应用

下一篇:补充

给主人留下些什么吧!~~