shell编程(6)(7)
目录
一、if条件判断
基本if语句
if单行写法
if-else语句
if-elif-else语句
条件判断中的比较操作符
使用(( ... ))进行数值比较
示例
二、for循环
基本for循环
for循环单行写法
示例
for循环与命令行参数
for循环与序列
C风格的for循环
注意事项
三、while循环
基本while循环
while循环单行写法
示例
示例1:使用while循环读取用户输入
示例2:使用while循环处理数字序列
注意事项
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。
一、if条件判断
首先用vim打开一个脚本k.sh
vim k.sh
#定义变量 a=10 b=20 #进行条件判断 if [ "$a" -eq "$b" ];then echo "a=b" elif [ "$a" -gt "$b"];then echo "a>b" else echo "没有符合上述条件" fi
基本if语句
if condition then command1 command2 ... commandN fi
-
condition:条件表达式,如果条件为真(返回状态码0),则执行then部分的命令。
-
command1 command2 ... commandN:当条件为真时执行的一系列命令。
-
fi:结束if语句。
if单行写法
if [ $(ps -ef | grep -c "bash") -gt 1 ]; then echo "true"; fi
-
$(...):命令替换,执行括号内的命令,并将输出替换到当前位置。
-
[...]:条件测试,用于判断括号内的表达式是否为真。
if-else语句
if condition then command1 command2 ... commandN else command fi
-
else:如果条件为假(返回状态码非0),则执行else部分的命令。
if-elif-else语句
if condition1 then command1 elif condition2 then command2 else commandN fi
-
elif:如果condition1为假,则会检查condition2,以此类推,直到找到第一个为真的条件。
条件判断中的比较操作符
-
>:大于,使用-gt。
-
<:小于,使用-lt。
-
==:等于,使用-eq。
-
!=:不等于,使用-ne。
使用(( ... ))进行数值比较
if (( a > b )); then echo "a is greater than b" fi
-
在(( ... ))中,可以直接使用>和<进行数值比较。
示例
for i in 1 2 3 4 5 do echo "the var is $i" done
这段代码会依次打印出:
the var is 1 the var is 2 the var is 3 the var is 4 the var is 5
二、for循环
基本for循环
for var in item1 item2 ... itemN do command1 command2 ... commandN done
-
var:循环变量,用于存储当前迭代的值。
-
item1 item2 ... itemN:一个序列或列表,var将依次取这些值。
-
command1 command2 ... commandN:每次迭代执行的命令序列。
-
do和done:分别标记for循环的开始和结束。
for循环单行写法
for var in item1 item2 ... itemN; do command1; command2... done;
示例
for i in 1 2 3 4 5 do echo "the var is $i" done
这段代码会依次打印出:
the var is 1 the var is 2 the var is 3 the var is 4 the var is 5
for循环与命令行参数
for循环还可以使用命令行参数:
for var in "$@" do command done
在这个例子中,$@代表所有传递给脚本的参数,var将依次取这些参数的值。
for循环与序列
for循环可以与序列一起使用,例如:
for i in {1..5} do echo "Number $i" done
这将打印:
Number 1 Number 2 Number 3 Number 4 Number 5
C风格的for循环
在某些Shell(如Bash)中,也可以使用C风格的for循环:
for ((i=0; i<5; i++)) do echo "Number $i" done
这将打印:
Number 0 Number 1 Number 2 Number 3 Number 4
注意事项
-
for循环中的命令可以是任何有效的Shell命令或语句。
-
in列表可以包含替换、字符串和文件名。
-
如果in列表被省略,for循环将使用命令行的位置参数。
三、while循环
基本while循环
while condition do command1 command2 ... commandN done
-
condition:条件表达式,只要这个条件为真,循环就会继续执行。
-
command1 command2 ... commandN:只要条件为真,这些命令就会被重复执行。
-
do和done:分别标记while循环的开始和结束。
while循环单行写法
while condition; do command1; command2... done
示例
示例1:使用while循环读取用户输入
echo "Enter 'q' to quit." while read -r input do if [[ "$input" == "q" ]]; then break fi echo "You entered: $input" done
这个循环会不断读取用户输入,直到用户输入q。
示例2:使用while循环处理数字序列
i=0 while [ $i -lt 5 ] do echo "Number $i" ((i++)) done
这个循环会打印数字0到4。
注意事项
-
condition可以是任何命令或表达式,只要它返回状态码0,循环就会继续。
-
使用break命令可以提前退出循环。
-
使用continue命令可以跳过当前迭代,继续执行下一次循环。
-
确保循环有一个明确的退出条件,否则可能会造成无限循环。