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