泷羽sec-星河飞雪-shell-4
免责声明
学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
泷羽sec官网:https://longyusec.com/
泷羽sec B站地址:https://space.bilibili.com/350329294
泷羽sec帮会:https://wiki.freebuf.com/front/societyFront?invitation_code=5a2005d9&society_id=239&source_data=2
文章目录
- 字符串运算
- 字符串运算符
- 代码实现
- 使用 `$`(变量引用)
- 使用 `-z`(检查字符串长度是否为零)
- 使用 `-n`(检查字符串长度是否非零)
- 使用 `=`(检查两个字符串是否相等)
- 使用 `!=`(检查两个字符串是否不相等)
- 注意事项
- 逻辑运算符
- 逻辑运算符
- 代码实现
- 使用 `||`(逻辑或)
- 使用 `&&`(逻辑与)
- 使用 `-a`(逻辑与,用于测试表达式)
- 使用 `-o`(逻辑或,用于测试表达式)
- 注意事项
字符串运算
字符串运算符
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] |
!= | 检测两个字符串是否不相等,不相等返回 true。 | [ $a != $b ] |
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] |
-n | 检测字符串长度是否不为 0,不为 0 返回 true。 | [ -n "$a" ] |
$ | 检测字符串是否不为空,不为空返回 true。 | [ $a ] |
代码实现
在Shell编程中,字符串运算符用于比较和检查字符串的值。以下是使用字符串运算符 $
(变量引用,不是直接作为运算符使用,但用于获取字符串值)、-z
、-n
、=
和 !=
的示例代码:
使用 $
(变量引用)
虽然 $
不是直接用作运算符,但它是获取字符串值的基础。
#!/bin/bash
# 定义一个字符串变量
my_string="Hello, World!"
# 使用 $ 来引用变量的值
echo $my_string
使用 -z
(检查字符串长度是否为零)
-z
运算符在字符串长度为零时返回真。
#!/bin/bash
# 定义一个空字符串变量
empty_string=""
# 检查字符串是否为空
if [ -z "$empty_string" ]; then
echo "字符串是空的"
else
echo "字符串不是空的"
fi
使用 -n
(检查字符串长度是否非零)
-n
运算符在字符串长度非零时返回真。
#!/bin/bash
# 定义一个非空字符串变量
non_empty_string="Hello"
# 检查字符串是否非空
if [ -n "$non_empty_string" ]; then
echo "字符串是非空的"
else
echo "字符串是空的"
fi
使用 =
(检查两个字符串是否相等)
=
运算符在两个字符串相等时返回真。注意,在 [ ]
中使用 =
时,等号两边通常需要有空格。
#!/bin/bash
# 定义两个字符串变量
string1="apple"
string2="apple"
# 检查两个字符串是否相等
if [ "$string1" = "$string2" ]; then
echo "两个字符串相等"
else
echo "两个字符串不相等"
fi
使用 !=
(检查两个字符串是否不相等)
!=
运算符在两个字符串不相等时返回真。
#!/bin/bash
# 定义两个字符串变量
string1="apple"
string2="orange"
# 检查两个字符串是否不相等
if [ "$string1" != "$string2" ]; then
echo "两个字符串不相等"
else
echo "两个字符串相等"
fi
注意事项
- 在使用
[ ]
时,确保运算符和字符串值之间有空格,例如[ "$string1" = "$string2" ]
。 - 字符串比较是区分大小写的,除非使用特定的工具或方法(如
tr
命令进行小写转换)来统一大小写。 - 在实际脚本中,建议总是将变量引用放在双引号中,以防止由于变量未定义或为空而导致的语法错误。
逻辑运算符
逻辑运算符
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] |
|| | 逻辑的 OR | `[[$a -lt 100 |
-a | 逻辑的AND | [ $a -lt 10 -a $b -gt 100] |
-o | 逻辑的OR | [ $a -lt 10 -o $b -gt 100] |
代码实现
在Shell编程中,逻辑运算符用于根据条件执行命令。以下是使用逻辑运算符 ||
、&&
、-a
和 -o
的示例代码:
使用 ||
(逻辑或)
||
运算符在第一个命令失败(返回非零值)时执行第二个命令。
#!/bin/bash
# 尝试执行一个不存在的命令,如果失败则打印消息
false || echo "第一个命令失败了"
# 尝试执行一个成功的命令,如果成功则不执行第二个命令
true || echo "这个不会打印,因为第一个命令成功了"
使用 &&
(逻辑与)
&&
运算符在第一个命令成功(返回零值)时执行第二个命令。
#!/bin/bash
# 尝试执行一个成功的命令,如果成功则打印消息
true && echo "第一个命令成功了"
# 尝试执行一个失败的命令,如果失败则不执行第二个命令
false && echo "这个不会打印,因为第一个命令失败了"
使用 -a
(逻辑与,用于测试表达式)
-a
运算符在 [ ]
或 test
命令中用于逻辑与操作。注意,现代的Shell脚本更推荐使用 &&
而不是 -a
,因为 -a
只能在 [ ]
或 test
命令中使用,而 &&
更加直观和通用。
#!/bin/bash
# 检查两个条件是否都为真
if [ "$1" -gt 5 -a "$2" -lt 10 ]; then
echo "第一个参数大于5且第二个参数小于10"
else
echo "条件不满足"
fi
使用 -o
(逻辑或,用于测试表达式)
-o
运算符在 [ ]
或 test
命令中用于逻辑或操作。同样地,现代的Shell脚本更推荐使用 ||
而不是 -o
。
#!/bin/bash
# 检查两个条件是否至少有一个为真
if [ "$1" -gt 10 -o "$2" -lt 5 ]; then
echo "第一个参数大于10或第二个参数小于5"
else
echo "条件不满足"
fi
注意事项
-a
和-o
只能在[ ]
或test
命令中使用,而&&
和||
可以在任何命令之间使用。- 现代的Shell脚本更推荐使用
&&
和||
,因为它们更加直观和通用。 - 在使用
[ ]
时,确保与-a
和-o
一起使用的条件之间有空格,例如[ "$1" -gt 5 -a "$2" -lt 10 ]
。
事项
-a
和-o
只能在[ ]
或test
命令中使用,而&&
和||
可以在任何命令之间使用。- 现代的Shell脚本更推荐使用
&&
和||
,因为它们更加直观和通用。 - 在使用
[ ]
时,确保与-a
和-o
一起使用的条件之间有空格,例如[ "$1" -gt 5 -a "$2" -lt 10 ]
。