`

Shell数值比较

 
阅读更多

1.  关于档案与目录的侦测逻辑卷标!
-f  常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d  常用!侦测『目录』是否存在
-b  侦测是否为一个『 block 档案』
-c  侦测是否为一个『 character 档案』
-S  侦测是否为一个『 socket 标签档案』
-L  侦测是否为一个『 symbolic link 的档案』
-e  侦测『某个东西』是否存在!


2.  关于程序的逻辑卷标!
-G  侦测是否由 GID 所执行的程序所拥有
-O  侦测是否由 UID 所执行的程序所拥有
-p  侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)


 

3.  关于档案的属性侦测!
-r  侦测是否为可读的属性
-w  侦测是否为可以写入的属性
-x  侦测是否为可执行的属性
-s  侦测是否为『非空白档案』
-u  侦测是否具有『 SUID 』的属性
-g  侦测是否具有『 SGID 』的属性
-k  侦测是否具有『 sticky bit 』的属性


 

4.  两个档案之间的判断与比较;例如[ test file1 -nt file2 ]
-nt 第一个档案比第二个档案新
-ot 第一个档案比第二个档案旧
-ef 第一个档案与第二个档案为同一个档案( link 之类的档案)


 

5.  逻辑的『和(and)』『或(or)』
&&  逻辑的 AND 的意思
||  逻辑的 OR 的意思

运算符号    代表意义
=   等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
!=  不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
<    小于 应用于:整型比较 在[] 中,不能使用 表示字符串 >   大于应用于:整型比较 在[] 中,不能使用 表示字符串
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
-a  双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o  单方成立(or) 逻辑表达式 –o 逻辑表达式
-z  空字符串
-n  非空字符串

 


所以你的循环条件部分写成这样才是对的:
while [ "${conunter}" -lt 5 ]; do
注意在条件检测中把变量名引起来的双引号不能省略,这个地方如果将来是字符串的判定,没有双引号在某些条件下会被玩死的。所以最好养成习惯,无论是不是数值都把变量名用双引号引起来。另外,做累加操作还有别的方法,像下面这样:
#!/bin/ksh
counter=0
while [ "${counter}" -lt 5 ]; do
((counter++))
echo "counter is $counter"

done

 

 

for i in $(seq 0 99); do [ $i lt 10 ] && useradd student0$i || useradd student$i; done

 

 

 

 

shell中的特殊变量:
变量名
含义

$0
shell或shell脚本的名字

$*
以一对双引号给出参数列表

$@
将各个参数分别加双引号返回

$#
参数的个数

$_
代表上一个命令的最后一个参数

$$
代表所在命令的PID

$!
代表最后执行的后台命令的PID

$?
代表上一个命令执行后的退出状态


e.g.

编辑如下test.sh脚本

#!/bin/bash

echo $0

echo $*

echo $@

echo $#

echo $$

ls -a /home

echo $_

在terminal窗口中执行:

xk@linux:~/work> ./test.sh -a -b -c /home

./test.sh

-a -b -c /home

-a -b -c /home

4

3250

. .. fy jodier sky xk zhj

/home

xk@linux:~/work>echo $?

0

xk@linux:~/work>echo $!



xk@linux:~/work> ls -a /home &

[1] 3302

xk@linux:~/work> . .. fy jodier sky xk zhj



[1]+ Done /bin/ls $LS_OPTIONS -a /home

xk@linux:~/work> echo $!

3302

xk@linux:~/work>

为了区别$*和$@编写如下test.sh脚本:

#!/bin/bash

function testargs

{

echo "$# args"

}

testargs "$*"

testargs "$@"

unset -f testargs

在terminal窗口中执行:

xk@linux:~/work> ./test.sh -a -b /home

1 args

3 args

xk@linux:~/work>

这里有一个很有意思的问题,如果test.sh为如下的内容:

#!/bin/bash

function testargs

{

echo "$# args"

}

testargs $*

testargs $@

unset -f testargs

再次执行有:

xk@linux:~/work> ./test.sh -a -b /home

3 args

3 args

xk@linux:~/work>

分享到:
评论

相关推荐

    shell中字符串、数值的比较.rar_shell中字符串、数值的比较

    综上所述,掌握这些基本的字符串和数值比较方法,你就可以编写出更复杂的Shell脚本来处理各种逻辑判断和流程控制。熟练运用这些技巧,可以极大地提高你在系统管理和自动化任务中的效率。通过实践和不断地学习,你将...

    shell基础 之 数值运算与运算符 环境变量配置文件 shell登录信息

    shell基础 之 数值运算与运算符 环境变量配置文件 shell登录信息 本文将详细介绍shell基础中的数值运算与运算符、环境变量配置文件和shell登录信息。 一、shell中的数值运算符 在shell中,数值运算符用于对数字...

    Shell编程范例之数值运算-TinyLab原创.

    《Shell编程范例之数值运算》由TinyLab原创,该文档属于《Shell编程范例序列》的第一章,主要介绍了在Shell编程中如何进行基本的数值运算,包括整数和浮点数的运算,以及如何使用Shell脚本来产生指定范围的随机数和...

    linux运维学习笔记:Shell变量的数值运算.pdf

    Linux运维学习中,Shell脚本的编写是基础技能之一。在Shell编程中,变量的数值运算是一项非常重要的功能。本文将详细介绍Shell变量的...通过不断的实践和练习,可以加深对Shell数值运算的理解,并提升运维工作的效率。

    数值运算shell脚本

    本文将深入讲解如何使用Shell脚本来执行数值运算,特别是基于提供的标题、描述和部分内容。 首先,我们来了解一下什么是数值运算。在计算机科学中,数值运算指的是对数字进行的各种算术操作,如加法、减法、乘法、...

    shell字符串比较判断是否为数字

    ### Shell字符串比较与数字判断详解 #### 一、概述 在Shell脚本编程中,进行字符串和数字的比较是一项常见的任务。本文将详细介绍如何在Shell脚本中进行字符串和数字的比较,包括基本的比较操作符及其使用场景,并...

    LinuxShell脚本学习基础视频

    【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_shell脚本编程_03变量和数值运算,父shell和子shell的...

    5.1: Shell概述 、 编写及执行脚本 、 Shell变量 、 数值运算 、 总结和答疑.docx

    Shell概述、编写及执行脚本、Shell变量、数值运算 在 Linux 系统中,Shell 是一个非常重要的组件,它位于 Linux 内核与用户之间,负责向内核翻译及传达用户/程序指令。Shell 既可以作为交互式的命令行工具,也可以...

    Shell高级编程实战视频.zip

    目录网盘文件永久链接 (第一、二部) 1-Shell编程课前思想-我一定要学好shell编程 2-学好Shell编程需要的必备基础 3-Shell脚本介绍及第一个规范Shell脚本...3-Shell的数值运算知识深度实践5 4-变量的读入之read.....

    大数据技术之Shell.docx

    * 变量默认类型都是字符串类型,无法直接进行数值运算 * 变量的值如果有空格,需要使用双引号或单引号括起来 变量可以通过 unset 命令来撤销,例如 unset A。 readonly 命令可以用来声明静态变量,例如 readonly A=...

    shell十三问

    - Shell支持多种条件测试,如文件测试(-f、-d等)、数值比较(-eq、-ne等)和字符串比较(=、!=等)。 - `if`语句结合`test`或`[ ]`命令进行条件判断,如`if [ -f "$FILE" ]; then ... fi`。 4. **流程控制** -...

    shell十三问(shell十三问)

    `if`语句配合`[ ]`或`[[ ]]`进行条件测试,可以测试文件状态、数值比较、字符串匹配等。 9. **问:Shell如何实现循环?** 支持`for`、`while`和`until`循环。例如,`for i in {1..10}; do echo $i; done`将打印1...

    shellbook-shell编程范例

    Shell编程范例这本书主要介绍了Shell编程的日常操作,这些操作涵盖了数值、逻辑值、字符串、文件、进程、文件系统等多个对象。这些对象的介绍和实例操作,有助于读者学以致用,并在使用过程中提高兴趣。本书并没有花...

    linux中shell的变量的数值计算

    在Linux系统中,Shell脚本是自动化任务的强大工具,而变量的数值计算是Shell脚本中的基础操作。本文将详细讲解Linux Shell中进行变量数值计算的几种方法。 1. **expr命令** `expr` 是一个用于执行算术和字符串...

    ChinaUnix论坛Linux Shell版精华帖合集

    虽然Shell主要处理文本,但它也支持一些基本的数值计算。这部分可能涉及expr命令的使用,或者利用bash内置的算术运算符进行加减乘除和条件判断。 五、加密解密: 在信息安全领域,数据加密和解密是关键环节。在...

    实验报告2_shell及shell编程.doc

    - `test`和`[ ]`:用于条件测试,如文件存在、数值比较等。 - 逻辑运算:`-a`(and)、`-o`(or)。 8. **控制结构**: - `if`:根据条件执行代码块。 - `for`:循环处理列表。 - `case`:多路选择结构。 9. ...

    shell经典教程 .TXT shell经典教程

    - **数值比较**:比较两个数字大小。 - **循环结构**: - **`for`循环**:遍历列表或字符串中的元素。 - **`while`循环**:当条件为真时重复执行一系列指令。 - **`until`循环**:与`while`相反,当条件为假时...

    shell (bash) 比较运算符

    这些比较通常用于数值逻辑判断。 - **`num1 -eq num2`**:如果 `num1` 等于 `num2`,则返回真值。例如 `[ 3 -eq $mynum ]`,此命令用于判断变量 `$mynum` 的值是否等于 `3`。 - **`num1 -ne num2`**:如果 `num1` ...

    Linux运维-3.Shell编程-11shell基础-118数值运算.avi

    Linux运维-3.Shell编程-11shell基础-118数值运算.avi

    unix shell脚本编程

    - **变量**:Bourne Shell中的变量只有字符串类型,数值运算需要借助外部命令。变量可以通过`var=string`来设置,使用时需要在前面加`$`,如`echo $var`。 **Bourne Shell中的变量:** 1. **用户变量**:由用户...

Global site tag (gtag.js) - Google Analytics