我有一个很好的使用 fswatch 的文件观察器:
cmd="go install ./..."
$cmd
fswatch -0 ./ | while read -d "" event; do
echo "File Changed: $event"
$cmd
done
现在我还想在命令行监听输入,所以如果我输入任何内容,$cmd
将运行
我不想停下来开始fswatch
很多(比如循环),因为它可能会错过更改。
做这个的最好方式是什么?
我有一个很好的使用 fswatch 的文件观察器:
cmd="go install ./..."
$cmd
fswatch -0 ./ | while read -d "" event; do
echo "File Changed: $event"
$cmd
done
现在我还想在命令行监听输入,所以如果我输入任何内容,$cmd
将运行
我不想停下来开始fswatch
很多(比如循环),因为它可能会错过更改。
做这个的最好方式是什么?
最简单的方法是将您的 while-loop 放在后台并为命令行启动第二个 while-loop:
cmd="go install ./..."
$cmd
fswatch -0 ./ | while read -d "" event; do
echo "File Changed: $event"
$cmd
done &
while read -r line ; do
echo "Commandline: $line"
$cmd
done
还有一种使用fifo的方法:
mkfifo nicename
cmd="go install ./..."
$cmd
tail -f nicename | while read -d "" event; do
echo "File Changed: $event"
$cmd
done &
fswatch -0 ./ >> nicename &
cat >> nicename
fifo 允许您使用两个以上的输入进程来使用您的循环。