我在.bash_aliases中具有循环功能,可帮助我快速监视某些命令。
loop()
{
while sleep 1;
do $@;
done
}
但是,我无法使此命令正常工作:
# loop mysql vb -e 'select count(*) from postparsed;'
# loop mysql vb -e "select count(*) from postparsed;"
# loop "mysql vb -e 'select count(*) from postparsed;'"
所有这些都返回mysql无效的命令行参数错误,因为没有将整个字符串传递给mysql。
mysql版本15.1发行版10.4.12-MariaDB,用于debian-linux-gnu(x86_64)使用readline 5.2版权所有(c)2000、2018,Oracle,MariaDB公司Ab等。
用法:mysql [OPTIONS] [数据库]
我也证实了这一点:
循环回显mysql vb -e'从后解析中选择count(*);'
mysql vb -e从后解析中选择count(*);
mysql vb -e从后解析中选择count(*);
对我来说很好。
我想念的是什么?为什么loop()函数无法正确处理我的mysql命令?
谢谢
shell解释引号,因此脚本看不到您在命令行输入的内容。您需要的是
loop mysql vb -e 'select count(*) from postparsed;'
但是,同时,您需要更改脚本以将整个SQL命令保留为一个单词。只需对参数数组加双引号即可实现:
do "$@"