bash 脚本:while 在使用 inotifywait 的简单脚本中读取的含义

eli*_*o.d 3 bash inotify while-loop


#!/bin/sh
inotifywait -qme CREATE --format '%w%f' /tmp/watch | while read f; 
do 
ln -s "$f" /tmp/other/; 
done
Run Code Online (Sandbox Code Playgroud)

我发现这个脚本正在寻找对执行特定工作的文件系统事件做出反应的东西。该脚本完美运行我不明白的是 while read f;

pax*_*blo 5

它捕获inotifywait命令的输出并逐行解析它,fwhile语句中依次分配每一行。

该特定inotifywait命令会持续监视/tmp/watch目录并在创建条目时输出完整路径名。

然后while循环处理这些文件名中的每一个,并在/tmp/other/目录中创建指向它的符号链接。

这是一个显示实际while read操作的示例脚本:

pax> printf "1\n2\n3 4\n" | while read f ; do echo "[$f]" ; done
[1]
[2]
[3 4]
Run Code Online (Sandbox Code Playgroud)