📅  最后修改于: 2023-12-03 15:15:10.016000             🧑  作者: Mango
在 Bash 脚本中,for 循环语法可用于迭代列表中的元素。可以将其用于文件、字符串、数组等。语法如下:
for variable_name in list
do
command1
command2
...
done
其中,list
是要迭代的列表,variable_name
是一个变量,它将在每个迭代中保存列表中的元素。循环的主体是放在 do
和 done
之间的一组命令,它们将在每个迭代中被执行。以下是一个示例:
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
。在循环主体中,command1
和 command2
将使用行作为参数进行调用,程序员可以基于这些行执行任意的操作。
以下是一个示例程序:
#!/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 命令和语法结合使用。