免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 584 | 回复: 5
打印 上一主题 下一主题

麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-03 09:28 |只看该作者 |倒序浏览
请哪位老大帮我逐句解释一下下面的几个脚本:
小弟多谢了!!!

第一个脚本:
#!/bin/bash
# /home/bryant/showenv
if [ $# -ne 1 ] ; then
        echo "Usage: showenv <envname>;"
else
        env=`set | grep $1`
        if [ -z $env ] ; then
                 echo "Don't set env $1"
        else
                 echo $env
        fi
fi


第二个脚本:
#!/bin/bash
# test.1
echo`word1:`
read word1
echo`word2:`
read word2
echo`word3`
read word3
if [ "$word1" = "$word2" -a "$word2" = "$word3" ]; then
echo`match:words1,2&3`
elif [ "$word1" = "$word2" ]; then
echo`match:words1&2`
elif [ "$word1" = "$word3" ]; then
echo`match:words1&3`
elif [ "$word2" = "$word3" ]; then
echo`match:words2&3`
else
echo`nomatch`

第三个脚本:
#!/bin/bash
# test.3
until [ "$IS_ROOT" ]
do
   sleep 5
IS_ROOT='who | grep root'
done
echo "watch it ,roots in" | mail bryant

第四个脚本:
#!/bin/bash
# test.4
number=0
while [ $number -lt 10 ]
do
echo "$number\c"
number=`expr $number+1`
done
echo

第五个脚本
#!/bin/bash
# test.5
echo`enter A,B,C:`
read letter
case $letter in
A|a) echo "you entered A.";;
B|b) echo "you entered B.";;
C|c) echo "you entered C.";;
*) echo "not a,b,";;
esac

论坛徽章:
0
2 [报告]
发表于 2005-06-03 10:02 |只看该作者

麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!!

这些都是太基本的脚本
自己看资料,五分钟就都会了

论坛徽章:
0
3 [报告]
发表于 2005-06-03 13:08 |只看该作者

麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!!

我到哪里找资料啊?我没有学过语言啊?如果可能的话就帮小弟解释一下吧!?多谢了!

论坛徽章:
0
4 [报告]
发表于 2005-06-03 14:46 |只看该作者

麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!!

第一个脚本:
#!/bin/bash
# /home/bryant/showenv
if [ $# -ne 1 ] ; then               
  #  判断是否有参数输入
   #  $# 传递到脚本的参数个数
  #  $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过
  #  $$ 脚本运行的当前进程I D号
  #  $! 后台运行的最后一个进程的进程I D号
  #  $@ 与$ #相同,但是使用时加引号,并在引号中返回每个参数
  #  $- 显示s h e l l使用的当前选项,与s e t命令功能相同
  #  $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

       echo "Usage: showenv <envname>;"
else
       env=`set | grep $1`           #将输入参数值赋给变量env
if [ -z $env ] ; then         
                           #判断该输入参数是否为空串
                     #为空:就输出: "Don't set env (用你输入的参数代替$1)"   
                     #不为空就输出:它的值。

echo "Don't set env $1"
       else
                echo $env
       fi
fi


第二个脚本:
#!/bin/bash
# test.1
echo`word1:`
read word1
echo`word2:`
read word2
echo`word3`
read word3           #可以使用r e a d语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量
              这里分别输入值给变量:word1 word2 word3

if [ "$word1" = "$word2" -a "$word2" = "$word3" ]; then            
                            #判断word1,word2,word3三个变量的值是否相等
         ( -a 逻辑与,操作符两边均为真,结果为真,否则为假。
           -o 逻辑或,操作符两边一边为真,结果为真,否则为假。
            ! 逻辑否,条件为假,结果为真。)
             相等:输出 match:words1,2&3
             不等:执行下面的判断。

echo`match:words1,2&3`
elif [ "$word1" = "$word2" ]; then  
                                       #判断word1,word2变量的值是否相等
                    相等:输出: match:word1&2
                     不等:执行下面的判断。


echo`match:words1&2`
elif [ "$word1" = "$word3" ]; then    #判断word1,word3变量的值是否相等
                    
                                      相等:输出: match:word1&3
                     不等:执行下面的判断


echo`match:words1&3`
elif [ "$word2" = "$word3" ]; then   #判断word2,word3变量的值是否相等
                      相等:输出: match:word2&3
                     不等:输出: nomatch

echo`match:words2&3`
else
echo`nomatch`

第三个脚本:
#!/bin/bash
# test.3
until [ "$IS_ROOT" ]         # until循环执行一系列命令直至条件为真时停止。
                            这里就是搜寻who命令中的是否存在root用户,   有就停止循环并向用户bryant发邮件,没有就一直搜。

do
  sleep 5
IS_ROOT='who | grep root'   # who 执行这项指令可得知目前有那些用户登入系统
                            |  管道命令  通过管道把一个命令的输出传递给另一个命令作为输入
                           grep 对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行

done
echo "watch it ,roots in" | mail bryant   

第四个脚本:
#!/bin/bash
# test.4
number=0
while [ $number -lt 10 ]    # while 循环语句 :条件为假时退出循环。这里判断:是否变量number的值小于10。是就退出循环,
                                          不是就一直循环。

do
echo "$number\c"
number=`expr $number+1`    #运算命令:expr 这里是:number变量的值加一。 也可以用其他运算如:减(-)乘(*) and so on。
done
echo

第五个脚本
#!/bin/bash
# test.5
echo`enter A,B,C:`   
read letter                        
case $letter in                #case选择判断语句: 为变量letter输入一个值。然后再进行判断:如果是输入的a或A,
                             就输出:you entered A.      
                如果输入的b或B  输出:you entered B.      
                如果是输入的c或C,就输出:you entered C.      
                如果是输入的是其他的任何值:输出: not a,b, 

A|a) echo "you entered A.";;
B|b) echo "you entered B.";;
C|c) echo "you entered C.";;
*) echo "not a,b,";;
esac

论坛徽章:
0
5 [报告]
发表于 2005-06-03 16:26 |只看该作者

麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!!

太谢谢了,老大!!!
小弟对老大的景仰犹如滔滔江水~~绵绵不绝~~~

论坛徽章:
0
6 [报告]
发表于 2005-06-03 17:04 |只看该作者

麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!!

是不是也看了 《LINUX与UNIX SHELL编程指南》(共30章) 资料,我建议你再多看几遍,就不用来这里问这么简单的问题了,自己完全可以看懂的。
还有就是:看的时候不要只看不练,把实例都自己在机器上打一遍并体会它们的用法,这样会记得深刻,提高也快。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP