繁体   English   中英

Bash:在文件更改和标准输入上运行命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM