Shell教程-文件包含

【实验目的】

了解Linux系统Shell编程中的文件包含。

【实验原理】

Shell和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。

Shell 文件包含的语法格式如下:

. filename   # 注意点号(.)和文件名中间有一空格  

或  

source filename  

【实验环境】

Linux Ubuntu 16.04

【实验内容】

编写shell脚本练习shell中文件包含。

【实验步骤】

1、创建两个shell 脚本文件:

vim test6.sh

脚本内容如下所示:

#!/bin/bash  
 echo "I love Linux"

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_文件包含


vim 7.sh

脚本内容如下所示:

#!/bin/bash  
 . ./test6.sh  
 # or   
 # source ./test1.sh

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_bash_02

2、执行结果:


bash test7.sh

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_文件包含_03

 

3.Shell变量

命令

说明

$ echo `date`

用echo输出当前日期时间,提示:使用date命令和反引号(反引号位于键盘左上角,ESC的下方。)

$name="zhangsan"

$echo  '$name\"'

$echo $name

第二步的echo命令输出的是什么?

补充命令,输出真正的名字zhangsan。

$read a b c

$let “sum=a=b+c”

$echo  $sum

命令1:用read命令将输入值赋给a,b,c

命令2:用let命令使sum=a+b+c,注意不要忘了双引号

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_Ubuntu_04

4.编程练习1

题目:编写一个脚本,求费波纳奇(Fibonacci)数列的前10项及总和。

首先创建一个文本:

$ cat exam11

脚本内容如下:

#!/bin/bash                      #说明本脚本是用bash编写的
a=1                                 #变量a存放奇数项的值,初值为1
b=1                                 #变量b存放偶数项的值,初值为1
echo –n –e "$a\t$b"        #显示a和b的值,中间用制表符空开。光标不换行
let "n=a+b"  
                   #变量n存放a与b之和
count=4                          #变量count表示循环次数,初值为4。为什么?
while [ $count –gt 0 ]      #当count值大于0时,则进入循环体
do                                   #下面是循环体
   let
"a=a+b"                    #计算前一项的值
   let
"b=b+a"                    #计算后续项的值
   echo –n –e
"\t$a\t$b"    #显示刚计算出的这两项的值
let "n +=a+b"                              #计算总和
let "count=count-1"                    #循环次数减1
done                                #循环体结尾
echo                                #输出空行
echo "The sum is $n"     #显示总和

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_文件包含_05

运行脚本结果如下:

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_Shell_06

5.编程练习2

题目:打印给定行数的*号。第一行打印1个,第二行打印2个,等等。行数由用户在命令行上输入。

首先创建一个文本:

$ cat exam13

脚本内容如下所示:

#!/bin/bash
for ((i=1;i<=$1;i++))
do
    for
((j=1;j<=i;j++))
   
do
       
echo  –n  "* "
   
done
   
echo  ""
done
echo 
"end! "

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_Linux_07

运行记得给参数!!!

6.编程练习3

题目:编程实现如下功能:输入一个账号信息,如系统中无此账号,则输出提示“该账号不存在”,否则输出提示“是否删除该账号Y|N”,如输入y或Y,则删除该账号,输入N或n则不删除,输入其他字符,则重复出现提示“是否删除该账号Y|N”。

源码:

echo "输入一个账号名"
read account
#进行判断,如果在passwd目录下存在这个账号名则证明存在
if [ `cat /etc/passwd
| grep -w $account` ]
        then echo "是否删除该账号Y|N"
        read determind                       #读取决定
        if [ "$determind" =
"Y" -o "$determind" = "y" ]     #进行删除
                then `userdel -r $account`      #连带目录和邮箱一起删除
        #如果输入的不是n或者y则重新进行输入和判断
        else         #并重复提示是否删除Y|N
                while [ "$determind"
!= "N" -a "$determind" != "n" ]
                do
                         echo "是否删除该账号Y|N"
                         read determind
                         if [
"$determind" = "Y" -o "$determind" =
"y" ]
                                 then ` userdel
- r $account`
                                 break;
                         fi
                done
        fi

else
        echo "该账号不存在";
fi

 

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_Linux_08

运行结果:

Linux||Linux操作之Shell教程-文件包含及shell变量和编程练习(Ubuntu 16.04)_文件包含_09