目录
一、Shell脚本使用函数
Shell程序支持函数,函数能够完成特定的功能,可以重复调用这个函数。
语法结构:
函数名()
{
函数体
}
函数调用方式为
函数名 参数列表
1.1、实例1
编写一个Shell程序test18,功能是求两个数的和,这两个数用位置参数传入,最后输出结果。
#! /bin/bash
add()
{
a=$1
b=$2
z=`expr $a + $b`
echo "The result is $z"
}
add $1 $2
执行结果如下:
注意:函数定义完成后必须同时写出函数的调用。
二、Shell脚本调用其它脚本
在Shell脚本的执行过程中,Shell脚本支持调用另一个Shell脚本,调用格式为:
程序名
2.1、实例1
编写一个Shell程序test19,在其中调用test20。
test19:
#! /bin/bash
echo "The main name is $0"
./test20
echo "The first string is $1"
test20:
#! /bin/bash
echo "How are you $USER?"
执行结果如下:
注意:
1、在Linux编辑中命令区分大小写字符;
2、在Shell语句中加入必要的注释,以便以后查询和维护,注释以#开头;
3、对Shell变量进行数字运算时,使用乘法符号“*”时,要用转义字符“\”进行转义;
4、由于Shell对命令中多余的空格不进行如何处理,因此程序员可以利用这一特性调整程序缩进,达到增强程序可读性效果;
5、在对函数命名时最好能使用有含义且能够容易理解的名字,即使函数名能够比较准确地表达函数所完成的任务,同时建议对于较大的程序要建立函数名和变量命名对照表。
三、实战
编写一个Shell程序,呈现一个菜单,有0~5一共6个命令选项,1为挂载U盘,2为卸载U盘,3为显示U盘信息,4为将硬盘中的文件拷贝到U盘,5为将U盘中的文件拷贝到硬盘,0为退出。
#! /bin/bash
#退出程序函数
quit()
{
clear
echo "***********************************************"
echo "*** Thank you to use, Good Bye! ***"
echo "***********************************************"
exit 0
}
#加载U盘函数
mountusb()
{
clear
mkdir /mnt/usb
/sbin/fdisk -l |grep /dev/sd
echo -e "Please Enter the device name of usb as shown above:\c"
read PARAMETER
mount /dev/$PARAMETER /mnt/usb
}
#卸载U盘函数
unmountusb()
{
clear
ls -la /mnt/usb
}
#显示U盘信息函数
display()
{
clear
umount /mnt/usb
}
#拷贝硬盘文件到U盘函数
cpdisktousb()
{
clear
echo -e "Please Enter the filename to be Copide(under Current directory):\c"
read FILE
echo "Copying, please wait..."
cp $FILE /mnt/usb
}
#拷贝U盘文件到硬盘函数
cpusbtodisk()
{
clear
echo -e "Please Enter the filename to be Copide in USB:\c"
read FILE
echo "Copying, please wait..."
cp /mnt/usb/$FILE .
}
clear
while true
do
echo "======================================================"
echo "*** LINUX USB MANAGE PROGRAM ***"
echo " 1-MOUNT USB "
echo " 2-UMOUNT USB "
echo " 3-DISPLAY USB INFORMATION "
echo " 4-COPY FILE IN DISK TO USB "
echo " 5-COPY FILE IN USB TO DISK "
echo " 0-EXIT "
echo -e "Please Enter a Choice(0-5):\c"
read CHOICE
case $CHOICE in
1) mountusb;;
2) unmountusb;;
3) display;;
4) cpdisktousb;;
5) cpusbtodisk;;
0) quit;;
*) echo "Invalid Choice! Correct Choice is (0-5)"
sleep 4
clear;;
esac
done