shell脚本功能函数集合

 #查找当前目录中是否存在指定目录,若不存在,则创建之

function mkdir_1
{
	if test ! -d $1
    then
		mkdir $1
    fi
}

#将指定文件中的"prefix = .*"串替换为"prefix=\/home\/gnome-unicore-install2\/usr/"

#可以用来作为sed用法的参考

function modify_prefix
{
	chmod +w $1
    cp $1 $1.bak
    sed 's/prefix = .*/prefix=\/home\/gnome-unicore-install2\/usr/g' $1.bak > $1
    rm $1.bak
}

 #将指定文件中的"^LDFLAGS =.*"串替换为"LDFLAGS = -rdynamic -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm"

#change_gnome-config FILENAME
function change_gnome-config
{
	cp $1 $1.bak
    sed 's/^LDFLAGS =.*/LDFLAGS = -rdynamic -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm /g' $1.bak> $1    
    rm $1.bak
}

 #删除指定文件的含有指定字符的行

#格式:delete_line filename "word_contain"

function delete_line
{
	chmod +w $1
	cp $1 $1.bak
	cat $1.bak | grep -v -e "$2" >$1      
}

#用途:删除文件中包含line1或(和?)line2的行

#格式:delete_line filename line1 line2

function delete_line_no
{
	chmod +w $1
	cp $1 $1.bak
	sed  $2,$3'd' $1.bak>$1
	rm $1.bak
}

#用途:在LINE_NO指定的行插入字符串CONTENT

#可以用来作为sed用法的参考

#格式: add_line FILENAME LINE_NO CONTENT

function add_line
{
	chmod +w $1
	cp $1 $1.bak
	sed -e $2 'i\' "$3" '' $1.bak > $1
	rm $1.bak
}

#用途:检查含有"PC24"代码的程序并打印出来

#格式: check_PC24 //after installation 

function check_PC24
{
	echo "now comes the PC24 checking..."
	. $COMMAND_UNICORE/shell/shell_PC24 >& /dev/null

	if test -s $COMMAND_UNICORE/PC24_result
	then :
		echo "The following file contains PC24 problems: $COMMAND_UNICORE/PC24_result "
	else
		echo "No PC24 problem found"
	fi
}

 #打印标题

displayheader() 
{
	echo "   *****************************************"
	echo "   *         IeeeCC754 testing tool           *"
	echo "   *****************************************"
	echo " "
}

#打印一个菜单的做法

displayplatformmenu() 
{
	#clear the screen
	clear
	displayheader
	echo "   a) SunSparc "
	echo "   b) IntelPentium "
	echo "   c) AMD "
	echo "   d) Unicore32 "
	echo "   e) Unicore32(with FP2001) "
	echo " "
	echo  -n "   select a Platform > "
}

 #接收一个菜单输入

displayplatformmenu

read answer
case ${answer} in
a) TARGET="BasicOp";;
b) TARGET="Conversion";;
*) badchoice;;

esac

 #查找当前目录下是否存在file_name文件

#可以用来作为if用法的参考

detectfile_name() 
{
	if [ ! -f file_name ]
	then
		echo "Error: file_name does not exist.  Please check"
		exit 1;
	else
		echo "OK,the directy is exist"
	fi
}

 #将参数指定的一个或多个目录项以及其下的多级子目录下的所有文件名和目录名转换为小写。

cvitem()
{
	echo "mv $1 `dirname $1`/`basename $1 | tr \
	'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`"
}

[ $# = 0 ] && { echo "Usage: lcdir item1 item2 ..."; exit; }

for item in $*     #可以用来作为for用法的参考
do
	[ "`dirname $item`" != "`basename $item`" ] && {
		[ -d $item ] &&
		{
			for subitem in `ls $item`
			do
				cvlc $item/$subitem
			done
		}
		cvitem $item
	}
done

 #一个login的例子

if ($?path) then
	set path=($HOME/bin $path)
else
	set path=($HOME/bin /usr/bin .)
endif

if ( ! $ {?DT} ); then
	stty dec new
	tset -I -Q
endif
set mail=/usr/spool/mail/$USER

#关于if使用的几个例子

#执行一个命令或程序之前,先检查该命令是否存在,然後才执行

if [ -x /sbin/quotaon ] ; then

echo "Turning on Quota for root filesystem"

/sbin/quotaon /

fi

n        #得到Hostname

#!/bin/sh

if [ -f /etc/HOSTNAME ] ; then

HOSTNAME=`cat /etc/HOSTNAME`

else

HOSTNAME=localhost

fi

#如果某个设定档允许有好几个位置的话,例如crontab,可利用if then elif fi来找寻

if [ -f /etc/crontab ] ; then  #[ -f /etc/crontab ]等价于test -f /etc/crontab

CRONTAB="/etc/crontab"

elif [ -f /var/spool/cron/crontabs/root ] ; then

CRONTAB="/var/spool/cron/crontabs/root"

elif [ -f /var/cron/tabs/root ] ; then

CRONTAB="/var/cron/tabs/root"

fi

export CRONTAB

#利用uname来判断目前系统,并分别做各系统状况不同的事。

SYSTEM=`uname -s`

if [ $SYSTEM = "Linux" ] ; then

echo "Linux"

elif [ $SYSTEM = "FreeBSD" ] ; then

echo "FreeBSD"

elif [ $SYSTEM = "Solaris" ] ; then

echo "Solaris"

else

echo "What?"

fi

 #关于while使用的几个例子

#无条件循环

while : ; do

echo "do something forever here"

sleep 5

done

 

 

你可能感兴趣的:(shell脚本功能函数集合)