`

shell脚本的简单使用:三—— 之运算符使用

阅读更多
简单算术运算符
expr表达式计算工具在shell中的使用

注意:
1.条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]。
2.乘号(*)前边必须加反斜杠(\)才能实现乘法运算;

关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

关系运算符列表
-eq	检测两个数是否相等,相等返回 true。	[ $a -eq $b ] 返回 true。
-ne	检测两个数是否相等,不相等返回 true。	[ $a -ne $b ] 返回 true。
-gt	检测左边的数是否大于右边的,如果是,则返回 true。	[ $a -gt $b ] 返回 false。
-lt	检测左边的数是否小于右边的,如果是,则返回 true。	[ $a -lt $b ] 返回 true。
-ge	检测左边的数是否大等于右边的,如果是,则返回 true。	[ $a -ge $b ] 返回 false。
-le	检测左边的数是否小于等于右边的,如果是,则返回 true。	[ $a -le $b ] 返回 true。


布尔运算符
布尔运算符列表
!	非运算,表达式为 true 则返回 false,否则返回 true。	[ ! false ] 返回 true。
-o	或运算,有一个表达式为 true 则返回 true。	[ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a	与运算,两个表达式都为 true 才返回 true。	[ $a -lt 20 -a $b -gt 100 ] 返回 false。


字符串运算符
= 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否为0,不为0返回 true。 [ -z $a ] 返回 true。
str 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。

if [ $a != $b ]
then
 echo "$a != $b : is not equals"
else
 echo "$a != $b : is equals"
fi

if [ $a -lt 100 -a $b -gt 15 ]
then
 echo "a < 100 && b > 15 is true"
else
 echo "a < 100 && b > 15 is false"
fi

if [ $a -gt 100 -o $b -gt 15 ]
then
 echo "a > 100 && b > 15 is true"
else
 echo "a > 100 && b > 15 is false"
fi



#字符串运算符
str="abc"
str1="bcd"

echo "定义两个字符串变量str=abc,str1=bcd"
if [ $str = $str1 ]
then
 echo "str is equals to str1"
else
 echo "str is not equals to str1"
fi



if [ -z $str ]
then
 echo "str is zero"
else
 echo "str is not zero"
fi


unset str
if [ -z $str ]
then
 echo "unset str is zero"
else
 echo "unset str is not zero"
fi


if [ -n $str ]
then
 echo "unset str is not zero"
else
 echo "unset str is zero"
fi

if [ $str ]
then
 echo "str is not empty"
else
 echo "str is empty"
fi
"arithmetic.sh" 161L, 1841C written                                                                                                                                                                                       
[root@iZ28wn3bjxxZ test]# sh arithmetic.sh 
sum 2+2=4
a + b=30
a - b=-10
a * b=200
a / b=0
a % b=10
a is not equals to b
定义3个变量x=20,y=10,z=20
x not equals to y
x equals to z
x gt y
x not et z
x ge z
x le z
10 != 20 : is not equals
a < 100 && b > 15 is true
a > 100 && b > 15 is true
定义两个字符串变量str=abc,str1=bcd
str is not equals to str1
str is not zero
unset str is zero
unset str is not zero
str is empty
[root@iZ28wn3bjxxZ test]# cat arithmetic.sh 
#!/bin/bash

#shell中的计算
#simple example
var=`expr 2 + 2`
echo "sum 2+2=$var"



a=10
b=20
val=`expr $a + $b`
echo "a + b=$val"

val=`expr $a - $b`
echo "a - b=$val"

val=`expr $a \* $b`
echo "a * b=$val"

val=`expr $a / $b`
echo "a / b=$val"


val=`expr $a % $b`
echo "a % b=$val"

if [ $a == $b ]
then 
  echo "a is equals to b"
fi

if [ $a != $b ]
then 
 echo "a is not equals to b"
fi


#关系运算符在shell中不支持字符串,只支持数字或者是数字的字符串
x=20
y=10
z=20
echo "定义3个变量x=20,y=10,z=20"

if [ $x -eq $y ]
then 
 echo "x equals to y"
else
 echo "x not equals to y"
fi


if [ $x -ne $z ]
then 
 echo "x not equals to z"
else
 echo "x equals to z"
fi


if [ $x -gt $y ]
then 
 echo "x gt y"
else
 echo “x lt y”
fi


if [ $x -lt $z ]
then
 echo "x et z"
else
 echo "x not et z"
fi


if [ $x -ge $z ]
then 
 echo "x ge z"
else
 echo "x not ge z"
fi


if [ $x -le $z ]
then 
 echo "x le z"
else
 echo "x not le z"
fi


#布尔运算符

if [ $a != $b ]
then 
 echo "$a != $b : is not equals"
else
 echo "$a != $b : is equals"
fi

if [ $a -lt 100 -a $b -gt 15 ] 
then
 echo "a < 100 && b > 15 is true"
else
 echo "a < 100 && b > 15 is false"
fi

if [ $a -gt 100 -o $b -gt 15 ]
then
 echo "a > 100 && b > 15 is true"
else
 echo "a > 100 && b > 15 is false"
fi



#字符串运算符
str="abc"
str1="bcd"

echo "定义两个字符串变量str=abc,str1=bcd"
if [ $str = $str1 ]
then 
 echo "str is equals to str1"
else 
 echo "str is not equals to str1"
fi



if [ -z $str ]
then 
 echo "str is zero"
else 
 echo "str is not zero"
fi


unset str
if [ -z $str ]
then
 echo "unset str is zero"
else
 echo "unset str is not zero"
fi


if [ -n $str ]
then
 echo "unset str is not zero"
else
 echo "unset str is zero"
fi

if [ $str ]
then 
 echo "str is not empty"
else 
 echo "str is empty"
fi


执行结果
sum 2+2=4
a + b=30
a - b=-10
a * b=200
a / b=0
a % b=10
a is not equals to b
定义3个变量x=20,y=10,z=20
x not equals to y
x equals to z
x gt y
x not et z
x ge z
x le z
10 != 20 : is not equals
a < 100 && b > 15 is true
a > 100 && b > 15 is true
定义两个字符串变量str=abc,str1=bcd
str is not equals to str1
str is not zero
unset str is zero
unset str is not zero
str is empty


文件测试运算符
文件测试运算符列表
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是具名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
#!/bin/sh

file=/root/test/test_file.sh

if [ -r $file ]
then 
 echo "$file has read access"
else 
 echo "$file not have read access"
fi 

if [ -w $file ]
then
 echo "$file has write permission"
else
 echo "$file does not have write permission"
fi

if [ -x $file ]
then
 echo "$file has excute permission"
else
 echo "$file does not have excute permission"
fi

if [ -f $file ]
then
 echo "$file is an ordinary file"
else
 echo "$file is specil file"
fi

执行后的结果
/root/test/file_test.sh has read access
/root/test/file_test.sh has write permission
/root/test/file_test.sh has excute permission
/root/test/file_test.sh is an ordinary file
/root/test/file_test.sh is exist

分享到:
评论

相关推荐

    详解:Bash Shell 脚本中的括号:()、(( ))、[ ]、[[ ]]、{ } 及 他们使用的运算符!

    (( )):2.1、作用:2.2、关于 (( )) 中使用的运算符:3、Bash 内部命令 —— [ ] :3.1、作用:3.2、关于 [ ] 中使用的运算符:4、双中括号 —— [[ ]] :4.1、作用:4.2、关于 [[ ]] 中使用的运算符:5、花括号 —— ...

    shell脚本第二天——变量

    本文将深入探讨Shell脚本中的变量及其相关的使用规则和技巧。 首先,让我们了解一下变量的定义。在Shell中,变量名必须以字母、数字或下划线开头,后续可以跟任何数量的字母、数字或下划线。例如,定义一个名为...

    学习shell的入门资料(shell十三问+shell基础十二篇)doc版

    - 如何编写简单的Shell脚本实现自动化任务,如定时备份、日志分析等。 通过这两份文档,你可以系统地了解Shell的基本概念、常用命令以及脚本编写技巧。实践中不断尝试和调试,是提高Shell技能的关键。对于Linux...

    shell脚本三剑客.docx

    Linux 系统中的文本处理工具 —— 三剑客(grep、sed、awk) Linux 系统中有三个非常重要的文本处理工具,分别是 grep、sed 和 awk,它们被称为 Linux 系统中的“三剑客”。这些工具都是命令行界面的,能够帮助用户...

    跟老男孩学Linux运维:Shell编程实战.pdf

    接下来,书中会深入讲解Shell脚本的基本语法,如变量、运算符、流程控制结构(如条件语句if/else和循环for/while)、函数定义、输入/输出重定向以及错误处理等。这些知识点构成了编写Shell脚本的核心要素,让读者...

    跟老男孩学Linux运维:Shell编程实战

    《跟老男孩学Linux运维:Shell编程实战》这本书主要涵盖了Linux运维中的核心技能之一——Shell编程,旨在帮助读者深入理解并熟练掌握Shell脚本的编写技巧。在Linux系统管理中,Shell脚本扮演着至关重要的角色,它能够...

    Linux shell编写C语言词法分析器

    在使用这个shell编写的词法分析器时,开发者可以学习如何结合shell脚本的特性来处理复杂的文本分析问题。对于学生来说,这是一个很好的实践项目,可以帮助理解编译原理的基础知识;对于有经验的shell脚本开发者,它...

    linux与unix shell编程指南(16-30).pdf

    12. **正则表达式**:在Shell脚本中使用正则表达式进行文本匹配和处理。 13. **awk和sed**:这两个强大的文本处理工具经常与Shell一起使用,用于数据提取、格式化和替换。 14. **别名和函数**:创建Shell别名和...

    xiyoulinux

    - **Shell脚本编程**:Shell脚本是一种简单的脚本语言,主要用于自动化Linux系统的各种任务。 - **Shell简介**:Shell是Linux系统中的命令解释器,用户可以通过Shell与操作系统交互。 - **Shell的类型**:Linux系统...

    shell读书笔记

    三、Shell脚本 1. 脚本结构:脚本以`#!/bin/bash`开头声明使用的Shell,接着是命令和控制结构。 2. 控制流:`if...fi`条件语句,`for...done`循环,`while...done`循环,`case...esac`多分支选择。 3. 函数:定义...

    2本linux shell 编程chm

    Linux Shell编程是Linux系统管理与自动化任务的核心技术之一,它主要指的是使用Shell脚本来执行一系列命令,实现自动化操作。在Linux环境中,Bash(Bourne-Again SHell)是最常用的Shell,也是许多Linux发行版的默认...

    shell学习方法

    - **脚本格式**:编写Shell脚本时,需要在第一行指定脚本解释器的位置,通常采用`#!/bin/sh`的形式。 - **文件扩展名**:虽然没有强制要求,但通常Shell脚本文件以`.sh`作为扩展名,便于识别。 ##### 2. 执行Shell...

    Shell高级编程(中文版)

    - **热身部分**:这一部分主要是为了引入Shell编程的概念,以及如何开始编写第一个Shell脚本。它包括了如何使用“Sha-Bang”(即#!)来调用脚本的基础知识。 - **特殊字符**:在Bash中,有一些特殊的字符具有特定的...

    shell编程中级实例

    Shell编程是一种在Linux和Unix操作系统中广泛...这些实例涵盖了Shell编程的核心概念,通过它们你可以更好地理解和应用Shell脚本解决实际问题。学习和熟练掌握这些知识点将极大地提升你在Linux或Unix系统中的工作效率。

    linux操作系统实验报告_shell简单编程.pdf

    实验报告涵盖了三个主要的Shell编程任务,旨在加深对Linux操作系统和Shell脚本的理解,提高编程技能。以下是详细的知识点解析: 1. **时间密码验证** 实验的第一个目标是创建一个Shell脚本,用于验证用户输入的...

    unix--shell的一些特殊参数小结

    本文旨在总结这些知识点,帮助读者更好地理解和掌握 Unix Shell 的核心功能之一——特殊参数。通过本文的学习,你将能够更加熟练地运用这些参数来编写高效稳定的脚本。 #### 二、特殊参数概述 Unix Shell 提供了一...

    Shell脚本字符串单引号和双引号的区别浅析

    本文将深入探讨Shell脚本中字符串的两种常见表示方式——单引号和双引号,并介绍它们之间的区别以及一些常见的字符串操作方法。 一、单引号与双引号的区别 1. 单引号 (`'`): - 在单引号括起来的字符串中,所有...

    高级Bash脚本编程指南--中文版(advance_bash_scriipt_progaming_guide).pd苹果脚本跟我学.pdff

    "苹果脚本跟我学.pdf"可能侧重于Apple Script,它是苹果生态系统中的脚本语言,虽然语法不同,但其核心思想——通过脚本实现自动化,与Bash脚本编程有相通之处。结合这两份资源,你可以从不同角度全面了解和掌握脚本...

Global site tag (gtag.js) - Google Analytics