如何在没有将循环写入脚本或其他应用程序的情况下循环Unix shell中的命令/程序。
例如,我编写了一个输出光传感器值的脚本,但我现在仍在测试它,所以我希望它通过重复运行可执行文件来循环运行它。
也许我也想在循环中运行“ls”或“df”。我知道我可以在几行bash代码中轻松完成这项工作,但是能够在终端中为任何给定的命令集输入命令对我来说同样有用。
答案 0 :(得分:5)
你可以在shell脚本中编写完全相同的循环,将它写在一行中,用分号代替返回,如
for NAME [in LIST ]; do COMMANDS; done
此时你可以编写一个名为repeat
的shell脚本,通过简单地将COMMANDS
更改为$1
,给定一个命令,运行N次。
答案 1 :(得分:2)
这并不能完全回答你的问题,但我觉得这是相关的。 shell循环的一个好处是一些命令返回项目列表。当然这很明显,但是你可以使用for循环执行的操作是在该项列表上执行命令。
for $file in `find . -name *.wma`; do cp $file ./new/location/ done;
你可以发挥创意并做一些非常强大的事情。
答案 2 :(得分:2)
我建议使用“watch”,它只是按照您的意愿行事,并在每次执行命令之前清理终端,因此可以轻松监控更改。
您可能已经拥有它,只需尝试watch ls
或watch ./my_script.sh
。您甚至可以使用-n选项控制每次执行之间等待的时间(以秒为单位),并且可以使用-d突出显示连续运行输出的差异。
尝试:
每秒运行ls:
watch -n 1 ls
每3秒运行一次my_script.sh,并突出显示差异:
watch -n 3 -d ./my_script.sh
观看节目手册页: http://linux.die.net/man/1/watch
答案 3 :(得分:1)
除了接受参数之外,您可以在命令行中完成脚本中可以执行的任何操作。之前我直接输入了bash,以便在我传输文件时观察目录填充:
while sleep 5s
do
ls photos
end