Linux sh脚本中的命令循环

Linux sh脚本中的命令循环,linux,bash,Linux,Bash,我正在我的树莓上为一个时间点创建一个sh脚本。 我已经在脚本4中包含了命令,该命令将依次执行,每个命令都经过测试并正常工作。现在我的问题是:如何在最后一个命令之后无限期地返回到第一个命令 #!/bin/bash sudo raspistill -w 1024 -h 768 -o /home/pi/timelapse/a%04d.jpg -t 600000 -tl 30000 sudo kill $(ps ax | grep 'timelapse' | awk '{print $1}') sud

我正在我的树莓上为一个时间点创建一个sh脚本。 我已经在脚本4中包含了命令,该命令将依次执行,每个命令都经过测试并正常工作。现在我的问题是:如何在最后一个命令之后无限期地返回到第一个命令

#!/bin/bash

sudo raspistill -w 1024 -h 768 -o /home/pi/timelapse/a%04d.jpg -t 600000 -tl 30000
sudo kill $(ps ax | grep 'timelapse' | awk '{print $1}')
sudo avconv -r 10 -i /home/pi/timelapse/a%04d.jpg -r 10 -vcodec libx264 -crf 20 -g 15 timelaps$
sudo rm /home/pi/timelapse/*.jpg
所以在
sudorm/home/pi/timelapse/*.jpg
之后,我想回到第一个命令

你知道吗

谢谢。

您可以使用循环:

#!/bin/sh

while true; do 
    ...
done
或者,重新调用脚本:

#!/bin/sh

...

exec $0 "$@"
坦率地说,在您的情况下,这两种方法中的任何一种似乎都有风险,因为您根本没有进行错误检查,而且您有可能进入一个相对快速的命令循环,不断失败。至少,你应该在睡眠1时使用
暂停一下
而不是
,而为true

您可以使用循环:

#!/bin/sh

while true; do 
    ...
done
或者,重新调用脚本:

#!/bin/sh

...

exec $0 "$@"

坦率地说,在您的情况下,这两种方法中的任何一种似乎都有风险,因为您根本没有进行错误检查,而且您有可能进入一个相对快速的命令循环,不断失败。至少,你应该在睡眠1时使用
暂停一下
而不是
,而为true

man
yes
while
但这将是一个无限循环,这一切的目的是什么?千万不要将
grep
管道输送到
awk
awk'/timelapse/{print$1}
grep timelapse |相同
可能重复的[这是一个例子]如果您打算使用
sudo
运行脚本中的每个命令,那么使用
sudo
@williampersell运行脚本本身可能更简单,我不会说永不。例如,在grep上使用
-o
比在awkman
yes
中获取相同的输出要容易得多,而这将是一个无限循环,这一切的目的是什么?千万不要将
grep
管道传输到
awk
awk'/timelapse/{print$1}
grep timelapse |相同
可能重复的[这是一个例子]如果您打算使用
sudo
运行脚本中的每个命令,那么使用
sudo
@williampersell运行脚本本身可能更简单,我不会说永不。例如,在grep上使用
-o
比在awk中获取相同的输出要容易得多