[英]Bash: run command on file change and on standard input
我有一个使用fswatch的不错的文件监视程序:
cmd="go install ./..."
$cmd
fswatch -0 ./ | while read -d "" event; do
echo "File Changed: $event"
$cmd
done
现在,我还想在命令行中侦听输入,因此,如果输入任何内容,将运行$cmd
我不想停止并fswatch
启动fswatch
(就像在循环中一样),因为它可能会错过更改。
做这个的最好方式是什么?
最简单的方法是将while循环置于后台,并为命令行启动第二个while循环:
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允许您使用两个以上的输入过程来使用循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.