- 论坛徽章:
- 0
|
麻烦哪位老大帮我解释一下下面的几个脚本!多谢!!!
第一个脚本:
#!/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
|
|