scull_load中有一项如下:
# invoke insmod with all arguments we got
# and use a pathname, as newer modutils don't look in . by default
/sbin/insmod -f ./$module.ko $* || exit 1
其中有一个||运算符,这个是逻辑或运算符。它与C语言中的含义不一样,在这里,如果insmod成功了,就不会执行exit 1,如下面所示:
1.逻辑与(&&),如果第一个操作数为false,那么结果肯定false,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。
2.逻辑或(||),如果第一个操作数为ture,那么结果肯定是ture,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。
以此为引子,讨论shell逻辑运算、基本运算、位运算:
运算符 | 作用及表示的意思 |
= | 等于。应用于:整型或字符串比较;如果在[ ] 中,使用字符“-eq”代替 |
!= | 不等于。应用于:整型或字符串比较;如果在[ ] 中,使用字符“-ne”代替 |
< | 小于。应用于:整型比较;不能在[ ] 中使用,使用字符“-lt”代替 |
> | 大于。应用于:整型比较;不能在[ ] 中不能,使用字符“-gt”代替 |
-eq | 等于。应用于:整型比较 |
-ne | 不等于。应用于:整型比较 |
-lt | 小于。应用于:整型比较 |
-gt | 大于。应用于:整型比较 |
-le | 小于或等于。应用于:整型比较 |
-ge | 大于或等于。应用于:整型比较 |
-a | 双方都成立(and) 逻辑表达式 –a 逻辑表达式 |
-o | 单方成立(or) 逻辑表达式 –o 逻辑表达式 |
-z | 空字符串 |
-n | 非空字符串 |
1. 关于档案(文件)与目录的侦测判断
逻辑符 | 作用及表示的意思 |
-f | 常用!侦测『文件』是否存在。eg: if [ -f filename ] |
-d | 常用!侦测『目录』是否存在。eg: if [ -d directoryname ] |
-b | 侦测是否为一个『block 档案』 |
-c | 侦测是否为一个『character 档案』 |
-S | 侦测是否为一个『socket 标签档案』 |
-L | 侦测是否为一个『symbolic link 的档案』 |
-e | 侦测『某个东西』是否存在 |
逻辑符 | 作用及表示的意思 |
-r | 判断文件是否可读 |
-w | 判断文件是否可写 |
-x | 判断文件是否可执行 |
-s | 判断文件是否为一个『非空白文件』 |
-u | 判断文件是否具有『SUID』的属性 |
-g | 判断文件是否具有『SGID』的属性 |
-k | 判断文件是否具有『sticky bit』的属性 |
2. 关于程序的逻辑判断
逻辑符 | 作用及表示的意思 |
-G | 判断是否由GID 所执行的程序所拥有 |
-O | 判断是否由UID 所执行的程序所拥有 |
-p | 判断是否为程序间传送信息的name pipe或是FIFO |
3. 关于文件属性的侦测判断
逻辑符 | 作用及表示的意思 |
-r | 判断文件是否可读 |
-w | 判断文件是否可写 |
-x | 判断文件是否可执行 |
-s | 判断文件是否为一个『非空白文件』 |
-u | 判断文件是否具有『SUID』的属性 |
-g | 判断文件是否具有『SGID』的属性 |
-k | 判断文件是否具有『sticky bit』的属性 |
逻辑符 | 作用及表示的意思 |
-r | 判断文件是否可读 |
-w | 判断文件是否可写 |
-x | 判断文件是否可执行 |
-s | 判断文件是否为一个『非空白文件』 |
-u | 判断文件是否具有『SUID』的属性 |
-g | 判断文件是否具有『SGID』的属性 |
-k | 判断文件是否具有『sticky bit』的属性 |
4. 两个文件之间的判断与比较,例如[ test file1 -nt file2 ]
逻辑符 | 作用及表示的意思 |
-nt | 判断文件file1是否比文件file2新 |
-ot | 判断文件file1是否比文件file2旧 |
-ef | 判断文件file1和文件file2是否为同一个文件(link之类的文件) |
5. 逻辑的『和(and)』『或(or)』
逻辑符 | 作用及表示的意思 |
&& | 逻辑的 AND(和) 的意思 |
|| | 逻辑的 OR(或) 的意思 |
6. 算术运算
运算符 | 作用及表示的意思 |
= | 等于。应用于:整型或字符串比较;如果在[ ] 中,使用字符“-eq”代替 |
!= | 不等于。应用于:整型或字符串比较;如果在[ ] 中,使用字符“-ne”代替 |
< | 小于。应用于:整型比较;不能在[ ] 中使用,使用字符“-lt”代替 |
> | 大于。应用于:整型比较;不能在[ ] 中不能,使用字符“-gt”代替 |
-eq | 等于。应用于:整型比较 |
-ne | 不等于。应用于:整型比较 |
-lt | 小于。应用于:整型比较 |
-gt | 大于。应用于:整型比较 |
-le | 小于或等于。应用于:整型比较 |
-ge | 大于或等于。应用于:整型比较 |
-a | 双方都成立(and) 逻辑表达式 –a 逻辑表达式 |
-o | 单方成立(or) 逻辑表达式 –o 逻辑表达式 |
-z | 空字符串 |
-n | 非空字符串 |