网站建设的流程电子商务百度申请qq号免费注册
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
感谢泷羽sec 团队的教学
视频地址:shell(6)if条件判断与for循环结构_哔哩哔哩_bilibili
一、if条件判断
在Shell脚本中,if语句用于基于条件的评估来执行不同的代码块。以下是if语句的基本结构和一些高级用法:
基本结构
if [ 条件 ]; then# 如果条件为真,则执行这里的命令
else# 如果条件为假,则执行这里的命令
fi
条件表达式
-
字符串比较:
"$str1" = "$str2":相等。"$str1" != "$str2":不等。
-
数值比较:
-eq:等于。-ne:不等于。-gt:大于。-lt:小于。-ge:大于等于。-le:小于等于。
-
文件测试:
-e:文件或目录存在。-f:文件存在。-d:目录存在。-r:文件可读。-w:文件可写。-x:文件可执行。
-
字符串测试:
-z:字符串长度为零。-n:字符串长度非零。
高级用法
-
使用
[[ ]]:- 提供了更多的功能,如正则表达式匹配和模式扩展。
- 自动引用变量,防止单词拆分和文件名扩展。
- 支持
&&和||作为逻辑运算符。
-
逻辑运算符:
-a:逻辑与。-o:逻辑或。
-
复合命令:
&&:如果前一个命令成功,则执行下一个命令。||:如果前一个命令失败,则执行下一个命令。
示例
#!/bin/bash# 字符串比较
if [ "$str1" = "$str2" ]; thenecho "字符串相等"
elseecho "字符串不相等"
fi# 数值比较
if [ $num1 -eq $num2 ]; theneco "数值相等"
elseecho "数值不相等"
fi# 文件测试
if [ -f "filename" ]; thenecho "文件存在"
elseecho "文件不存在"
fi# 字符串测试
if [ -z "$str" ]; thenecho "字符串为空"
elseecho "字符串非空"
fi# 逻辑运算符
if [ $num1 -gt 10 -a $num2 -lt 20 ]; thenecho "$num1 大于 10 且 $num2 小于 20"
fi
注意事项
- 总是使用双引号来引用变量和字符串,以避免空格和特殊字符引起的问题。
- 在
[[ ]]中使用==和!=进行字符串比较,而不是=和!=。
二、for循环结构
在Shell脚本中,for循环是一种用于重复执行一系列命令的控制流结构。它可以根据不同的参数和语法结构来迭代执行。以下是几种常见的for循环用法:
基本语法
for 变量 in 列表
do# 循环体中的命令
done
迭代列表中的每个元素
for item in element1 element2 element3
doecho "$item"
done
例子:
for str in "hello world"
doecho $str
done
这个脚本的作用是:
-
for str in "hello world":这行定义了一个for循环,其中str是循环变量,它将依次取得字符串"hello world"中每个单词的值。注意,如果字符串中包含空格,Shell会将其视为多个单词。 -
do:这是循环体开始的标志。 -
echo $str:这是循环体内的命令,它将打印出当前迭代的字符串(即循环变量str的值)。 -
done:这是循环体结束的标志。
当这个脚本执行时,它将输出:
hello
world
每个单词占一行,因为for循环将按照空格将字符串分割成单词,并在每次迭代中将其中一个单词赋值给变量str。
