Shell脚本编程(二)

目录

一、Shell程序中使用变量

1、变量赋值

2、访问变量值

3、键盘输入变量值

4、实例1

5、实例2

二、表达式的比较

1、字符串比较

1.1、实例1

1.2、实例2

2、数字比较

2.1、实例1

3、逻辑操作

3.1、实例1

4、文件操作

4.1、实例1

4.2、实例2


一、Shell程序中使用变量

1、变量赋值

        Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,其格式为:

变量名=值

注意:等号(=)前后没有空格

        例如:

        x=6

        a="How are you"

表示把6赋值给变量x,字符串"How are you"赋值给变量a。

2、访问变量值

        如果需要访问变量值,可以在变量前面加一个美元符号"$",例如:

        一个变量给另一个变量赋值可以写作:

        变量2=$变量1

        例如:x=$i

        i++可以写作:i=$i+1

3、键盘输入变量值

        Shell程序设计中变量的值可以作为字符串从键盘读入,格式为:

read 变量

        例如:

         read为读入命令,它从键盘读入字符串到str。

4、实例1

        编写一个Shell程序test3,功能是从键盘读入一个目录名,然后显示这个目录下所有文件的信息。

        分析:存放目录的变量为DIRECTORY,其读入语句为:

read DIRECTORY

        显示文件的信息命令为:ls -a

#! /bin/bash

echo "Please input name of directory"
read DIRECTORY
cd $DIRECTORY
ls -l

         程序执行结果为:

5、实例2

        编写一个Shell程序test4,从键盘读入x、y的值,然后做加法运算,最后输出结果。

#! /bin/bash

echo "Please input x y"
read x y
z=`expr $x + $y`
echo "The sum of x and y is: $z"

        执行结果如下:

注意:表达式 `expr $x + $y`中的符号“`”是键盘左上角的“ ` ” 键。

二、表达式的比较

        Shell程序中,通常使用表达式比较来完成逻辑任务。表达式所代表的操作符有字符操作符数字操作符逻辑操作符以及文件操作符。其中文件操作符是一种Shell所独特的操作符。因为Shell中的变量都是字符串,为了达到对文件进行操作的目的,遇上才提供了文件操作符。

1、字符串比较

        作用:测试字符串是否相等、长度是否为零,字符串是否为NULL。

        常用的字符串操作符有:

字符串操作符含义及返回值
=比较两个字符串是否相同,相同则为“真”
!=比较两个字符串是否不同,不同则为“真”
-n比较两个字符串长度是否大于零,若大于零则为“真”
-z比较两个字符串长度是否相等,若相等则为“真”

1.1、实例1

        编写一个Shell程序test5,功能是从键盘输入两个字符串,判断这两个字符串是否相等,如相等输出。

#! /bin/bash

echo "Please input ar1"
read ar1
echo "Please input ar2"
read ar2
[ "$ar1" = "$ar2" ]
echo $?

        执行结果如下:

注意:"[" 后面和"]"前面及等号"="的前后都应有一个空格,这里是程序的退出情况,如果ar1和ar2的字符串不相等,则程序非正常退出,输出结果为1。 

1.2、实例2

        编写一个Shell程序,功能是比较字符串的长度是否大于零。

#! /bin/bash

echo "Please input ar"
read ar
[ -n "$ar" ]
echo $?

         执行结果如下:

注意:运行结果为1表示ar的长度小于等于零,0表示ar的长度大于零。

2、数字比较

        在Shell编程中的关系运算有别于其它编程语言,用test语句和下表中的运算符表示大小的比较。

运算符号含          义
-eq相等
-ge大于等于
-le小于等于
-ne不等于
-gt大于
-lt小于

2.1、实例1

        编写一个Shell程序test7,功能是比较两个数字是否相等。

#! /bin/bash

echo "Please input x and y"
read x y
if test $x -eq $y then
    echo "$x = $y"
else
    echo "$x != $y"
fi

        执行结果如下:

3、逻辑操作

        Shell程序设计中的逻辑运算符如表所示。

运算符号含     义
反:与一个逻辑值相反的逻辑值
-a与(and):两个逻辑值为“是”返回值为“是”,反之为“否”
-o或(or):两个逻辑值有一个为“是”,返回值为“是”

3.1、实例1

        编写一个Shell程序test8,功能是给两个字符变量赋值,一个变量赋予一定的值,另一个为空,求两者的与、或操作。

#! /bin/bash

part1="1111"
part2=""
[ "$part1" -a "$part2" ]
echo $?
[ "$part1" -o "$part2" ]
echo $?

        执行结果如下:

4、文件操作

        文件测试操作表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,下表只列出一些常用的操作符。

运算符号含      义
-d对象存在且为目录,返回值为“是”
-f对象存在且为文件,返回值为“是”
-L对象存在且为符号,返回值为“是”
-r对象存在且可读,返回值为“是”
-s对象存在且长度非零,返回值为“是”
-w对象存在且可写,返回值为“是”
-x对象存在且可执行,返回值为“是”

4.1、实例1

        编写一个Shell程序test9,功能是判断/mnt/d目录是否存在于/root下。

#! /bin/bash

[ -d /root/mnt/d ]
echo $?

        执行结果如下:

        如果判断的目录存在,则 

#! /bin/bash

[ -d /mnt/d ]
echo $?

        执行结果如下:

注意:运行结果是返回参数"$?",目录存在,返回值为0;不存在,返回1。

4.2、实例2

        编写一个Shell程序test10,功能是输入一个字符串,如果是目录,则显示目录下的信息,如果是文件则显示文件内容。

#! /bin/bash

echo "Please input the directory name or file name"
read DORF
if [ -d $DORF ]
then
    ls $DORF
elif [-f $DORF]
then
    cat $DORF
else
    echo "input error!"
fi

        如果输入的是目录,执行结果为:

        如果输入的是文件名,执行结果为:

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值