📜  for line in output bash - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:15:10.016000             🧑  作者: Mango

介绍 Bash 中的 for 循环语法

在 Bash 脚本中,for 循环语法可用于迭代列表中的元素。可以将其用于文件、字符串、数组等。语法如下:

for variable_name in list
do
    command1
    command2
    ...
done

其中,list 是要迭代的列表,variable_name 是一个变量,它将在每个迭代中保存列表中的元素。循环的主体是放在 dodone 之间的一组命令,它们将在每个迭代中被执行。以下是一个示例:

for file in $(ls)
do
    echo "$file"
done

在此示例中,$(ls) 返回当前目录中的文件列表,然后将每个文件名赋给变量 $file。然后,循环主体中的 echo 命令将输出每个文件的名称。

以行为单位遍历输出

在执行命令时,有时需要以行为单位遍历输出。在 Bash 中,可以使用 for line in output 循环来完成此操作。语法如下:

command | while read line
do
    command1 "$line"
    command2 "$line"
done

其中,command 是要执行的命令,while read line 将读取 command 命令的输出,并为每一行分配变量 line。在循环主体中,command1command2 将使用行作为参数进行调用,程序员可以基于这些行执行任意的操作。

以下是一个示例程序:

#!/bin/bash

curl -s "https://example.com/api/data" | \
while read line; do
    echo "$line" | jq .name
done

在此示例中,curl 命令从 API 中获取数据,然后将每个 JSON 行作为 read 命令的输入。循环主体中的 jq 命令使用 name 键值提取每个 JSON 行中的名称。

总而言之,for line in output 循环是在 Bash 中遍历输出的最佳方式之一。如有需要,可以将其与其他 Bash 命令和语法结合使用。