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语言进行字符串的比较以及实现数值的比较
简略鲜明介绍了shell基础中的数值运算与运算符 、环境变量配置文件和 shell登录信息,附有操作截图。
次的shell案例比较简单,但有其特点,脚本整体简洁明了,但功能强大,可以实现带自定义数值运算
本文阐述:shell中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等
【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_shell脚本编程_03变量和数值运算,父shell和子shell的...
本文由TinLab原创。 本文是《Shell编程范例...本文主要讨论Shell编程中的基本数值运算,这类运算包括: - 数值(包括整数和浮点数)间的加、减、乘、除、求幂、求模等 - 产生指定范围的随机数 - 产生指定范围的数列
linux运维学习笔记:Shell变量的数值运算
目录网盘文件永久链接 (第一、二部) 1-Shell编程课前思想-我一定要学好shell编程 2-学好Shell编程需要的必备基础 3-Shell脚本介绍及第一个规范Shell脚本...3-Shell的数值运算知识深度实践5 4-变量的读入之read.....
初学shell 入门好书!!!! 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...
Linux运维-3.Shell编程-11shell基础-118数值运算.avi
今天小编就为大家分享一篇关于linux中shell的变量的数值计算,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
5.1: Shell概述 、 编写及执行脚本 、 Shell变量 、 数值运算 、 总结和答疑.docx
在写IBM AIX K Shell script时,感觉不那么友好,主要是有一些格式细节要求比较严格,不太习惯,后来写惯了也就好了,下面的三个script是我为公司最近写的 一个自动备份shell script,基本要求就是每天晚上23:00自动跑起来...
《跟老男孩学Linux运维:Shell编程实战》第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等相关的知识。《跟老男孩学Linux运维:Shell编程实战》第三部分为第9章~第...
3.2.1 数值比较 63 3.2.2字符串比较 64 3.2.3 文件比较 65 3.2.4 复合条件检查 65 3.3 if-then的高级特征与case命令 66 3.3.1 使用双圆括号 66 3.3.2 使用双方括号 67 3.3.3 case命令 67 3.4 for命令 67 3.4.1 读取...
第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号...
10.5.1 Shell基础-Bash变量-数值运算与运算符.mp4 10.5.2 Shell基础-Bash变量-变量测试与内容替换.mp4 10.6.1 Shell基础-环境变量配置文件-简介.mp4 10.6.2 Shell基础-环境变量配置文件-作用.mp4 10.6.3 Shell...
一些关于shell编程的基础知识,shell学习手册,介绍一些关于shell的基础知识。 目录:shell简介,数值计算,shell的循环结构,shell技巧。字符串操作,文件操作,进程操作等
基于Shell-Solid单元混合建模技术的焊接数值模拟方法.docx