bash语法之循环

本文详细介绍了Shell脚本中的循环结构,包括for循环、while循环和until循环的基本语法及使用示例,并提供了变量自增的不同方法。

for循环语法

for基本的for循环

// 语法1for循环:
       for 变量名 in 列表; do
          循环体(正常执行的执行命令)
          语句1
          语句2
          语句3
          ...
      done  

//注:”for” 循环总是接收 “in” 语句之后的某种类型的字列表。在本例中,指定了四个英语单词,但是字列表也可以引用磁盘上的文件,甚至文件通配符。

示例1:最基本的for循环
#!/bin/bash 
for x in one two three four
do
    echo number $x
done
示例2:对目录中的文件做for循环
#!/bin/bash
for x in /var/log/*
do
    #echo "$x is a file livin in /var/log"
    echo $(basename $x)is a file living in /var/log
done

注:这个$x获得的是绝对路径文件名;可以使用 “basename” 可执行程序来除去前面的路径信息。如果只引用当前工作目录中的文件(例如,如果输入 “for x in *”),则产生的文件列表将没有路径信息的前缀。

对位置参数做for循环
#!/bin/bash
for x in "$@"
do
    echo you typed ${thing}
done
for 循环中用seq产生循环此时,加上c语言形式的for循环
#!/bin/bash
echo "for: Traditional form: for var in ..."
for j in $(seq 1 5)
do
        echo $j
done
// C语言形式的for循环
echo "for: C language form: for (( exp1; exp2; exp3 ))"

for (( i=1; i<=5; i++ ))
do
        echo "i=$i"
done

注:对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;这里的C语言for循环风格是挺熟悉的吧。

while循环语句

循环输出1到10的数字
#!/bin/bash
myvar=1
while [ $myvar -le 10 ]
do
    echo $myvar
    myvar=$(($myvar+1))
done

注:主要特定条件为真,”while”语句就会执行

until循环语句

Until语句提供了与“while”语句相反的功能,只要条件为假就循环

#!/bin/bash
myvar=1
until [ $myvar -gt 10 ]
do
        echo $myvar
       myvar=$(( $myvar + 1 ))
done
知识点:循环时变量自增的5中方法
Linux Shell中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。
我所知道的,bash中,变量自增,目前有五种方法:
1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))

简单的实例

#!/bin/bash
i=0;
while [ $i -lt 4 ];
do
      echo $i;
      i=`expr $i + 1`;
      # let i+=1;
      # ((i++));
      # i=$[$i+1];
      # i=$(( $i + 1 ))
done
Bash脚本是一种在Unix和Linux系统中广泛使用的命令行解释器脚本语言。它允许用户通过编写脚本来自动化执行一系列命令,从而提高工作效率。以下是Bash脚本的一些基本语法要点: ### 变量 Bash脚本中的变量不需要声明类型,可以直接赋值使用。变量名区分大小写,且不能包含空格。 ```bash name="John Doe" age=30 echo "Name: $name, Age: $age" ``` 变量可以通过`$`符号引用其值,如上例中的`$name`和`$age`。 ### 命令替换 命令替换允许将一个命令的输出结果作为另一个命令的参数或变量的值。这可以通过反引号(`)或`$(...)`来实现。 ```bash current_date=$(date) echo "Current date: $current_date" ``` ### 条件判断 Bash提供了多种条件测试命令,最常用的是`if`语句结合`test`命令或者`[[ ... ]]`结构来判断条件是否成立。 ```bash if [[ $age -gt 18 ]]; then echo "Adult" else echo "Minor" fi ``` 这里的`-gt`表示大于,还有其他的比较运算符可以使用,比如`-lt`(小于)、`-eq`(等于)等。 ### 循环 Bash支持几种循环结构,包括`for`、`while`和`until`循环。 #### For 循环 ```bash for i in {1..5}; do echo "Number: $i" done ``` #### While 循环 ```bash count=1 while [[ $count -le 5 ]]; do echo "Count: $count" ((count++)) done ``` #### Until 循环 ```bash count=1 until [[ $count -gt 5 ]]; do echo "Count: $count" ((count++)) done ``` ### 函数 函数可以用来封装一段可重复使用的代码块。定义函数时不需要参数列表,但可以在调用时传递参数。 ```bash greet() { echo "Hello, $1!" } greet "World" ``` 在这个例子中,`$1`代表传递给函数的第一个参数。 ### 输入输出重定向 Bash允许对输入输出进行重定向,以控制命令的输入来源和输出目标。 - `>` 重定向标准输出到文件,会覆盖文件原有内容。 - `>>` 重定向标准输出到文件,会在文件末尾追加内容。 - `<` 重定向标准输入从文件读取。 - `<<` Here Document,用于传递多行文本给命令。 ```bash echo "Hello World" > output.txt cat output.txt >> output.txt cat < input.txt ``` ### 管道 管道(`|`)可以将一个命令的输出直接作为另一个命令的输入。 ```bash ps aux | grep 'bash' ``` 这个命令会列出所有正在运行的bash进程。 以上就是Bash脚本的一些基础语法,这些概念构成了编写复杂脚本的基础。通过实践和不断学习,可以更深入地掌握Bash脚本编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值