如何使用while循环中的最后一个命令?

如何使用while循环中的最后一个命令?

我想知道如何修改这段代码。

ls
while [ 1 > 0 ]
do
fc -s
sleep 1
done

对于fc -s,可以参考这个问题了解详情。

我的问题如下:

  1. 它将如何运行?如果您将其命名为test.sh.
  2. 如果我想fc -s代表第一行ls,我该如何修改它?也就是说,我想运行ls然后睡眠一秒钟,然后ls,然后睡眠一秒钟,...当然ls可以通过其他命令放置。

答案1

你为什么不使用 watch 命令,它正是你想要的?这是手册中所说的:

watch - 定期执行程序,全屏显示输出

每秒运行该命令:

watch -n 1 command

答案2

您可以尝试以下方法:

 $ cat script.sh
 while sleep 1
 do
     eval "$@"
 done
 $ ls
 $ sh script.sh !!

该脚本将一遍又一遍地运行传递给它的命令。!!计算出最后一个命令。


如果您希望该命令成为脚本的一部分并且不想在多个位置键入它,请尝试以下操作:

 $ cat script.sh
 cmd=ls
 while sleep 1
 do
     eval "$cmd"
 done
 $ sh script.sh

相关内容