北滘 网站建设,新手wordpress,jquery插件网站推荐,设计汽车网站目录
3.1 for循环语句
3.1.1for语句的结构 3.1.2 for语句应用实例
3.2 使用whlie循环语句
1.打印数字1到5
3.3 使用until循环语句
3.3.1until的实例
1.打印数字1到5#xff08;使用until的逆向逻辑#xff09;
2.等待用户输入特定内容
3.4 函数
3.4.1Shell函数的基…目录
3.1 for循环语句
3.1.1for语句的结构 3.1.2 for语句应用实例
3.2 使用whlie循环语句
1.打印数字1到5
3.3 使用until循环语句
3.3.1until的实例
1.打印数字1到5使用until的逆向逻辑
2.等待用户输入特定内容
3.4 函数
3.4.1Shell函数的基本语法如下
示例
注意事项
3.5定义数组
3.5.1 访问数组元素
3.5.2 数组长度
3.5.3 数组操作和方法 3.1 for循环语句
在实际工作中经常会遇到某项任务需要多次执行的情况而每次执行时仅仅是处理的对象不一样其他命令相同。例如根据通讯录中的姓名列表创建系统账号根据服务器清单检查各主机的存活状态根据IP地址黑名单设置拒绝访问的防火墙策略等
当面对各种列表重复任务时使用简单的if语句已经难以满足要求而顺序编写全部代码更是显得异常烦琐、困难重重。for 循环语句可以很好地解决类似问题
3.1.1for语句的结构
使用for 循环语句时需要指定一个变量及可能的取值列表针对每个不同的取值重复执行相同的命令序列直到变量值用完退出循环。在这里取值列表”称为for语句的执行条件其中包括多个属性相同的对象需要预先指定(如通讯录、IP黑名单)。
for 循环语句的语法结构如下所示。
for variable in value1 value2 value3 ...
do # 在这里执行命令使用$variable引用当前值 echo $variable
done
上述语句结构中for语句的操作对象为用户指定名称的变量并通过in关键字为该变量预先设置了一个取值列表多个取值之间以空格进行分隔。位于 do..done 之间的命令序列称为循环体其中的执行语句需要引用变量以完成相应的任务。
for 语句的执行流程:首先将列表中的第一个取值赋给变量并执行do...done 循环体中的命令序列:然后将列表中的第二个取值赋给变量并执行循环体中的命令序列.….依此类推直到列表中的所有取值用完最后将跳至 done 语句表示结束循环如图所示。 3.1.2 for语句应用实例
#!/bin/bash list(apple banana cherry) //创建一个数组for fruit in ${list[]}
do echo I like $fruit //输出遍历
done 3.2 使用whlie循环语句
hile 是一个控制结构用于重复执行一段代码直到某个条件不再满足为止。其基本语法如下
while [ condition ]
do # 要重复执行的命令或代码块
done 其中[ condition ] 是一个测试条件如果条件为真返回值为0则执行 do 和 done 之间的命令或代码块。然后再次检查条件如果条件仍然为真则再次执行代码块如此循环直到条件不再为真。 1.打印数字1到5
#!/bin/bash counter1
while [ $counter -le 5 ]
do echo $counter counter$((counter1))
done
3.3 使用until循环语句
until循环与while循环相反它在条件不满足时执行循环体一旦条件满足就停止循环。
until [ condition ]
do # 循环体条件不满足时执行的语句 ...
done
[ condition ]这是测试条件如果条件为假返回非零值则执行do和done之间的语句。如果条件为真返回零值则停止循环。
3.3.1until的实例
1.打印数字1到5使用until的逆向逻辑
虽然通常我们会使用while循环来打印数字1到5但也可以使用until循环通过逆向逻辑来实现
#!/bin/bash counter1
until [ $counter -gt 5 ]
do echo $counter counter$((counter1))
done
这里我们设置了一个条件$counter -gt 5即counter大于5由于初始时counter为1这个条件不满足所以进入循环体。每次循环counter增加1直到counter大于5条件满足循环结束。
2.等待用户输入特定内容
假设我们想要等待用户输入stop一旦输入stop则停止循环
#!/bin/bash read -p 请输入内容输入stop结束: input
until [ $input stop ]
do echo 您输入了: $input read -p 请继续输入内容输入stop结束: input
done
echo 已接收到stop指令退出循环。
input变量中。然后我们使用until循环来检查
input是否等于stop。如果不等于就打印用户输入的内容并再次提示用户输入。一旦用户入stop循环结束。
3.4 函数
我们通常不直接定义像其他编程语言如C、Python或JavaScript中的函数。但是Shell脚本提供了一种称为“函数”或“shell函数”的机制它允许你定义可重用的代码块。这些代码块可以在脚本的多个位置被调用。
3.4.1Shell函数的基本语法如下
function_name() { # 这里是函数的代码 # 可以是任意有效的shell命令 echo Hello from $function_name
}
示例
下面是一个简单的示例展示了如何定义和调用一个Shell函数
#!/bin/bash # 定义一个名为greet的函数
greet() { local name$1 echo Hello, $name!
} # 调用greet函数并传递一个参数
greet World # 再次调用greet函数这次传递一个不同的参数
greet Shell Scripting
注意事项
在函数内部你可以使用$1、$2等来引用传递给函数的参数。就像在脚本的主体中引用位置参数一样。你可以使用local关键字在函数内部声明局部变量。这些变量只在函数内部可见并且在函数结束时会被销毁。这有助于防止变量名冲突和意外的副作用。函数名通常以字母或下划线开头并且不能包含空格或特殊字符除了下划线。函数名是大小写敏感的。你可以在脚本的任何位置定义函数但通常建议在脚本的开头或接近开头的位置定义它们以便在需要时轻松找到和引用它们。
3.5定义数组
在Bash中数组是通过将值分配给连续的索引来定义的。索引可以是整数或字符串在关联数组中。
# 定义索引数组
arr_index(value1 value2 value3) # 定义关联数组Bash 4.0及以上版本
declare -A arr_assoc
arr_assoc[key1]value1
arr_assoc[key2]value2
3.5.1 访问数组元素
索引数组${arr_index[index]}关联数组${arr_assoc[key]}
3.5.2 数组长度
索引数组${#arr_index[]} 或 ${#arr_index[*]}关联数组${#arr_assoc[]} 或 ${!arr_assoc[]}后者列出所有键
3.5.3 数组操作和方法 方法 描述 示例 定义数组 使用圆括号和空格分隔的值来定义数组 arr(value1 value2 value3) 访问元素 使用${array[index]}访问索引数组的元素${array[key]}访问关联数组的元素 echo ${arr[0]} 获取数组长度 使用${#array[]}或${#array[*]} 获取索引数组的长度${#array[]} 获取关联数组的长度键的数量 echo ${#arr[]} 遍历数组 使用for循环遍历数组的所有元素 for i in ${arr[]}; do echo $i; done 关联数组键 使用${!array[]}列出关联数组的所有键 echo ${!arr_assoc[]} 追加元素 使用${array[]} new_element 将新元素追加到数组末尾注意这实际上是创建了一个新的数组原数组不变 arr(${arr[]} value4) 删除元素 使用unset array[index]删除索引数组的元素unset array[key] 删除关联数组的元素 unset arr[1] 切片数组 Bash没有直接的切片功能但可以通过循环和条件语句来实现 自定义实现 数组排序 使用sort命令或外部工具如IFS 和循环对数组进行排序 for i in arr[];doechoi; done 关联数组默认值 Bash 4.3及以上版本支持关联数组的默认值使用 ${array[key]:-default} echo ${arr_assoc[key3]:default_value} 数组替换 使用${array[]/pattern/replacement} 替换数组中的所有元素Bash 4.0及以上版本 new_arr(${arr[]/%foo/bar})