如何在Bash中通过单行循环运行两个命令?

8
为什么不能在一行bash循环中运行两个命令?
$ for i in {1..100} do printf %s "$(date)" ; mysql -uroot -e "SHOW SLAVE STATUS\G" | grep "Seconds_Behind_Master" ; sleep 10 ; done
-bash: syntax error near unexpected token `mysql'

但是这个简单版本可以运行:
for i in {1..3}; do echo $i ; ls ; done

7
换行是免费的。加入一些换行符号,帮助下一个需要维护你代码的人,并让代码更易读。请在代码中添加适当的换行符号。 - glenn jackman
2
没错,@glennjackman 但是当你在命令行中运行一次性监控脚本时,你每次都会创建一个文件吗? - Ryan
1个回答

24

你需要在花括号扩展后面添加一个;。你在简单的示例中有它,但在“错误”的示例中没有:


你需要在花括号扩展后面添加一个;。你在简单的示例中有它,但在“错误”的示例中没有:
for i in {1..100}; do printf %s "$(date)" ; mysql -uroot -e "SHOW SLAVE STATUS\G" | grep "Seconds_Behind_Master" ; sleep 10 ; done
                 ^ this one

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接