有关B-SHELL的一些运用方法

发布时间:2020-06-21编辑:脚本学堂
介绍:本文只介绍B-SHELL的一些运用方法,所有的介绍适合于内核2.2.13的及以上的 liunx环境。

介绍:
本文只介绍B-shell的一些运用方法,所有的介绍适合于内核2.2.13的及以上的 liunx环境。

B-SHELL是一个便捷的开发工具,在紧急情况下要实现产品的某一功能,而用C 语言不能很快完成,则可选择B-SHLL实现,日后再用C语言完成;在产品里对于那些不常运行的程序可用B-SHELL替代,这样可以避免因对C语言使用 不当而带来的不良后果;对于一些处理量不大的程序可用B-SHELL实现。

讨论:
 

复制代码 代码如下:

#!/bin/sh
ALL=$@
#{
B-SHELL中带”$”的变量的说明:$0 SHELL命令本身
$n 位置参数n(n != 0)
$@ 所有的输入变量
$$ 当前进程号
$! 最近后台进程的PID值
$? 最近命令执行状态的返回值
$# 参数的个数
}#

declare -x TIME=0
#{
变量声明的说明:
    declare 声明全局变量;如果在函数内声明,则只在函数内有效(局部变量);-x表明变量值可以传递给后继命令(从函数传值给后继命令);-i表明变量作为整型处理;-r表明变量为只度;用“ ”代替“-”,原有变量的声明屏蔽,恢复为无定义状态。由第一次赋值决定其参数在脚本中的性质,如果首次是字符,以后都当字符处理,其它等同。
    local声明局部变量;local 变量名 [ = “值”];一般在函数内部运用。
    直接定义变量,不用declare 和local指明。由第一次赋值决定其参数在脚本中的性质,如果首次是字符,以后都当字符处理,其它等同。也可在定义确定。
}#

declare -x NUMBEROFFILE=0

#{
关于脚本函数说明:
定义方式:function 函数名() 或 函数名()
{
函数体(作你想要作的事)
}

调用方式:函数名 参数列
在脚本里函数的调用就象调用命令一样使用。 后面将会提到
}#

function hel_ver()  显示帮助信息或版本号
{
if [ "$1" = "-h" ] ;then
echo "fstrf -v :show version of shell script."
echo "Usages : fstrf -h||-v "
echo " fstrf ARGUMENTS DIRECTORY STRING || fstrf ARGUMENTS STRING "
echo " For more informations run man fstrf."
exit
fi

if [ "$1" = "-v" ] || [ "$1" = "version" ];then
echo "fstrf version 1.0.1 2001/07/05."
exit
fi
}

function find_offer()  在给定的目录下查找是否有包含指定字串的文件,并显示其路径
{
for file in `ls "$1"`  for var in command do ………done 的一个典型运用;对$1目录下的目录或文件进行处理
do
if [ -d "$1"/$file ];then  判断$file是否为目录
continue
else
string=`grep "$2" "$1"/$file `  查找字串
if [ -n "$string" ];then  判断字串为非空
echo $string > /str
str=`linuxjishu/13830.html target=_blank class=infotextkey>awk '{print $1 }' /str`  取得str 的第一域值
rm /str
if [ "$str" != "Binary" ];then  剔除二进制文件
NUMBEROFFILE=`expr $NUMBEROFFILE 1 `  相当于C语言的NUMBEROFFILE =1;可用
let ‘ NUMBEROFFILE=NUMBEROFFILE 1‘替换
TIME=`expr $TIME 1`
echo "$1/$file"  显示匹配文件
fi
fi
fi
done
}

#else

function find_curr()  在当前目录下查找是否有包含指定字串的文件,并显示其路径(相对路径)实现机制与find_offer相同
{
# if [ "$#" -eq "1" ];then
for file in `ls ./` 如果只输入一个参数,则查找当前工作目录下的文件
do
if [ -d "$file" ];then
continue
else
string=`grep "$1" $file`
if [ -n "$string" ];then
echo $string > /str
str=`awk '{print $1 }' /str`
rm /str

if [ "$str" != "Binary" ];then
NUMBEROFFILE=`expr $NUMBEROFFILE 1 `
TIME=`expr $TIME 1`
echo "./$file"
fi
fi
fi
done
}

function print_num()  显示查找的文件数 (在查多级目录时未能实现,如果你知道,告诉我,我会很高兴的!)
{
if [ "$NUMBEROFFILE" -gt "0" ] ;then
# echo ""
if [ "$#" -eq "1" ];then
#{

关于彩色显示的说明:
不同的linux系统,运行的命令的方式都不一样。在LINUX/BSD系统中:echo -e “33[40;32m”;在V系统中:echo “33[40;32m”。
本例中采用前一种方式。40位为背景色,取值40。