2023年8月3日发(作者:)
实验三 Shell基础
实验三 shell基础
(一)shell变量实验
【需求】
掌握shell简单变量的使用方法;
掌握shell变量属性的设置方法;
掌握shell系统变量的申明方法;
掌握shell位置变量的使用方法;
掌握shell位置变量的移位方法;
掌握shell内嵌变量的查找和使用方法。
1【系统及软件环境】
1.操作系统:Red Hat AS 4.0
2.GNU bash 2.0以上
【实验配置文件及命令】
1.vi命令
2.chmod命令
【实验步骤】
1.编辑程序文件。
[root@linux tmp]# vi
#!/bin/bash
#文件名:
#作用:展示变量的使用方法
#用法:
#作者:zhoulifa()
#生成:2006-6-5 18:05:00
#
myfunc () {
local localvar=5;
1 本实验部分内容已超出大纲,认证考试中将不会使用。
35 Linux系统管理员实训手册
echo 局部变量的值是:$localvar
}
echo 显示所有位置变量的值:
{
echo 变量$0是:$0
echo 变量$1是:$1
echo 变量$2是:$2
echo 变量$3是:$3
echo 变量$4是:$4
echo 变量$5是:$5
}
echo 左移2位后的变量值:
shift 2;
{
echo 变量$0是:$0
echo 变量$1是:$1
echo 变量$2是:$2
echo 变量$3是:$3
echo 变量$4是:$4
echo 变量$5是:$5
}
myfunc;
echo 变量localvar在这里不可用:$localvar
simvar=1
echo 简单变量$simar的值是:$simvar
export MYPATH=/bin:/usr/bin
echo 变量$MYPATH作为一个系统变量,在所有进程里可用
echo变量$HOSTNAME是一个shell内嵌变量,其值是:$HOSTNAME
declare -r rdonlyvar=10;
echo 变量$rdonlyvar是个只读变量,值不可变,试图改变时系统会报错。
rdonlyvar=5;
2.改变文件的属性为可执行。
[oot@linux tmp]# chmod +x
3.执行程序。
[root@linux tmp]# ./ 1 2 3 4 5 6 7 8 9 A B
36 实验三 Shell基础
【实验故障与分析】
下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。
序 号
1
2
3
实验故障
无法输入中文
分析与解决
可能是因为你工作在控制台上,而控制台默认无法输入中文,你可以进入图形环境操作
【启发联想】
1.变量命名有哪些约定?
2.如何使一个普通变量成为环境变量?
(二)shell一般编程
【需求】
了解shell编程的一般步骤;
掌握shell编程的一般格式;
掌握shell程序的执行方法;
掌握shell程序的if-else-fi结构使用方法;
掌握自定义函数的使用方法。
【系统及软件环境】
1.操作系统:Red Hat AS 4.0
2.GNU bash 2.0以上
【实验配置文件及命令】
1.vi命令
2.chmod命令
【实验步骤】
1.编辑程序文件。
[root@linux tmp]# vi
37 Linux系统管理员实训手册
#!/bin/bash
#文件名:
#用法: Directory Day
#例如: / 5
#作者:zhoulifa()
#生成:2006-6-5 17:11:00
#此程序展示了shell的一般编程方法,并综合运用grep等命令,且展示了函数的用法
usagefunc () {
echo 用法: $0 Directory Day;
echo 例如: $0 `pwd` `date +%d`;
}
#判断输入参数个数是否正确
if [ $# -ne 2 ] ; then
usagefunc;
exit;
fi
#判断输入日期的第一个数字是否为零,若为零则去掉
if [ $2 = "01" ] ; then M=1; MONOK=1;
elif [ $2 = "02" ] ; then M=2; MONOK=1;
elif [ $2 = "03" ] ; then M=3; MONOK=1;
elif [ $2 = "04" ] ; then M=4; MONOK=1;
elif [ $2 = "05" ] ; then M=5; MONOK=1;
elif [ $2 = "06" ] ; then M=6; MONOK=1;
elif [ $2 = "07" ] ; then M=7; MONOK=1;
elif [ $2 = "08" ] ; then M=8; MONOK=1;
elif [ $2 = "09" ] ; then M=9; MONOK=1;
else M=$2; MONOK=1;
fi
if [ $MONOK = 1 ] ; then
ls -l -R $1 | grep -e "$M";
else
usagefunc;
fi
2.改变文件的属性为可执行。
38 实验三 Shell基础
[root@linux tmp]# chmod +x
3.执行程序。
[root@linux tmp]# ./ /tmp 2006 6 5
【实验故障与分析】
下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。
序 号
1
2
3
实验故障
if [ $# -ne 4 ]这个语句报错
分析与解决
可能是因为[和$之间没有空白符;[和$之间,4和]之间必须有一个空白符
【启发联想】
1.函数的使用方法是怎样的?
2.其他条件语句,如case的使用方法是怎样的?
(三)shell流程控制
【需求】
掌握shell编程的分支结构使用方法;
掌握shell编程的for循环结构使用方法;
掌握shell编程的while循环结构使用方法;
掌握shell编程的读取输入信息的方法。
【系统及软件环境】
1.操作系统:Red Hat AS 4.0
2.GNU bash 2.0以上
【实验配置文件及命令】
1.vi命令
2.chmod命令
39 Linux系统管理员实训手册
【实验步骤】
1.编辑程序文件。
[root@linux tmp]# vi
#!/bin/bash
#文件名:
#作用:用菜单综合显示各种功能
#用法:
#作者:zhoulifa( )
#生成:2006-6-5 17:25:00
#显示了循环程序的结构,并且展示了case/(for name in word)结构的用法
EXITCODE=6
until
echo 显示当前目录内容..........1
echo 切换工作目录..............2
echo 编辑文件.................3
echo 删除文件.................4
echo 显示文件内容..............5
echo 退出.....................$EXITCODE
read choice
test $choice = $EXITCODE
do
case $choice in
1) ls;;
2) echo 请输入目标目录:
read dir
cd $dir
echo 当前工作目录是:
pwd;;
3) echo 请输入要编辑的文件名:
read file
vi $file;;
4) echo 请输入要删除的文件名:
read file
rm $file;;
5) echo 要显示的文件名特征(比如:*.c, *.h, *.cpp等):
read file
for fname in `ls -R $file` ; do
40 实验三 Shell基础
less $fname
done
;;
q|Q|$EXITCODE) echo Goodbye; exit;;
*) echo 选项错误;
esac
done
2.改变文件的属性为可执行。
[root@linux tmp]# chmod +x
3.执行程序。
[root@linux tmp]# ./
【实验故障与分析】
下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。
序 号
1
2
3
实验故障
执行程序报错
分析与解决
可能是因为漏写了esac或done,注意检查语法
【启发联想】
1.其他循环语句的使用方法是怎样的?
2.shell程序有哪些调试方法?
41
2023年8月3日发(作者:)
实验三 Shell基础
实验三 shell基础
(一)shell变量实验
【需求】
掌握shell简单变量的使用方法;
掌握shell变量属性的设置方法;
掌握shell系统变量的申明方法;
掌握shell位置变量的使用方法;
掌握shell位置变量的移位方法;
掌握shell内嵌变量的查找和使用方法。
1【系统及软件环境】
1.操作系统:Red Hat AS 4.0
2.GNU bash 2.0以上
【实验配置文件及命令】
1.vi命令
2.chmod命令
【实验步骤】
1.编辑程序文件。
[root@linux tmp]# vi
#!/bin/bash
#文件名:
#作用:展示变量的使用方法
#用法:
#作者:zhoulifa()
#生成:2006-6-5 18:05:00
#
myfunc () {
local localvar=5;
1 本实验部分内容已超出大纲,认证考试中将不会使用。
35 Linux系统管理员实训手册
echo 局部变量的值是:$localvar
}
echo 显示所有位置变量的值:
{
echo 变量$0是:$0
echo 变量$1是:$1
echo 变量$2是:$2
echo 变量$3是:$3
echo 变量$4是:$4
echo 变量$5是:$5
}
echo 左移2位后的变量值:
shift 2;
{
echo 变量$0是:$0
echo 变量$1是:$1
echo 变量$2是:$2
echo 变量$3是:$3
echo 变量$4是:$4
echo 变量$5是:$5
}
myfunc;
echo 变量localvar在这里不可用:$localvar
simvar=1
echo 简单变量$simar的值是:$simvar
export MYPATH=/bin:/usr/bin
echo 变量$MYPATH作为一个系统变量,在所有进程里可用
echo变量$HOSTNAME是一个shell内嵌变量,其值是:$HOSTNAME
declare -r rdonlyvar=10;
echo 变量$rdonlyvar是个只读变量,值不可变,试图改变时系统会报错。
rdonlyvar=5;
2.改变文件的属性为可执行。
[oot@linux tmp]# chmod +x
3.执行程序。
[root@linux tmp]# ./ 1 2 3 4 5 6 7 8 9 A B
36 实验三 Shell基础
【实验故障与分析】
下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。
序 号
1
2
3
实验故障
无法输入中文
分析与解决
可能是因为你工作在控制台上,而控制台默认无法输入中文,你可以进入图形环境操作
【启发联想】
1.变量命名有哪些约定?
2.如何使一个普通变量成为环境变量?
(二)shell一般编程
【需求】
了解shell编程的一般步骤;
掌握shell编程的一般格式;
掌握shell程序的执行方法;
掌握shell程序的if-else-fi结构使用方法;
掌握自定义函数的使用方法。
【系统及软件环境】
1.操作系统:Red Hat AS 4.0
2.GNU bash 2.0以上
【实验配置文件及命令】
1.vi命令
2.chmod命令
【实验步骤】
1.编辑程序文件。
[root@linux tmp]# vi
37 Linux系统管理员实训手册
#!/bin/bash
#文件名:
#用法: Directory Day
#例如: / 5
#作者:zhoulifa()
#生成:2006-6-5 17:11:00
#此程序展示了shell的一般编程方法,并综合运用grep等命令,且展示了函数的用法
usagefunc () {
echo 用法: $0 Directory Day;
echo 例如: $0 `pwd` `date +%d`;
}
#判断输入参数个数是否正确
if [ $# -ne 2 ] ; then
usagefunc;
exit;
fi
#判断输入日期的第一个数字是否为零,若为零则去掉
if [ $2 = "01" ] ; then M=1; MONOK=1;
elif [ $2 = "02" ] ; then M=2; MONOK=1;
elif [ $2 = "03" ] ; then M=3; MONOK=1;
elif [ $2 = "04" ] ; then M=4; MONOK=1;
elif [ $2 = "05" ] ; then M=5; MONOK=1;
elif [ $2 = "06" ] ; then M=6; MONOK=1;
elif [ $2 = "07" ] ; then M=7; MONOK=1;
elif [ $2 = "08" ] ; then M=8; MONOK=1;
elif [ $2 = "09" ] ; then M=9; MONOK=1;
else M=$2; MONOK=1;
fi
if [ $MONOK = 1 ] ; then
ls -l -R $1 | grep -e "$M";
else
usagefunc;
fi
2.改变文件的属性为可执行。
38 实验三 Shell基础
[root@linux tmp]# chmod +x
3.执行程序。
[root@linux tmp]# ./ /tmp 2006 6 5
【实验故障与分析】
下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。
序 号
1
2
3
实验故障
if [ $# -ne 4 ]这个语句报错
分析与解决
可能是因为[和$之间没有空白符;[和$之间,4和]之间必须有一个空白符
【启发联想】
1.函数的使用方法是怎样的?
2.其他条件语句,如case的使用方法是怎样的?
(三)shell流程控制
【需求】
掌握shell编程的分支结构使用方法;
掌握shell编程的for循环结构使用方法;
掌握shell编程的while循环结构使用方法;
掌握shell编程的读取输入信息的方法。
【系统及软件环境】
1.操作系统:Red Hat AS 4.0
2.GNU bash 2.0以上
【实验配置文件及命令】
1.vi命令
2.chmod命令
39 Linux系统管理员实训手册
【实验步骤】
1.编辑程序文件。
[root@linux tmp]# vi
#!/bin/bash
#文件名:
#作用:用菜单综合显示各种功能
#用法:
#作者:zhoulifa( )
#生成:2006-6-5 17:25:00
#显示了循环程序的结构,并且展示了case/(for name in word)结构的用法
EXITCODE=6
until
echo 显示当前目录内容..........1
echo 切换工作目录..............2
echo 编辑文件.................3
echo 删除文件.................4
echo 显示文件内容..............5
echo 退出.....................$EXITCODE
read choice
test $choice = $EXITCODE
do
case $choice in
1) ls;;
2) echo 请输入目标目录:
read dir
cd $dir
echo 当前工作目录是:
pwd;;
3) echo 请输入要编辑的文件名:
read file
vi $file;;
4) echo 请输入要删除的文件名:
read file
rm $file;;
5) echo 要显示的文件名特征(比如:*.c, *.h, *.cpp等):
read file
for fname in `ls -R $file` ; do
40 实验三 Shell基础
less $fname
done
;;
q|Q|$EXITCODE) echo Goodbye; exit;;
*) echo 选项错误;
esac
done
2.改变文件的属性为可执行。
[root@linux tmp]# chmod +x
3.执行程序。
[root@linux tmp]# ./
【实验故障与分析】
下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。
序 号
1
2
3
实验故障
执行程序报错
分析与解决
可能是因为漏写了esac或done,注意检查语法
【启发联想】
1.其他循环语句的使用方法是怎样的?
2.shell程序有哪些调试方法?
41
发布评论