目录
一、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
如果输入的是目录,执行结果为:
如果输入的是文件名,执行结果为:
标签:脚本,Shell,变量,编程,echo,实例,操作符,字符串 From: https://blog.csdn.net/L_peanut/article/details/140716163