。bash_aliases中的函数不接受完整的命令字符串[重复]

问题描述 投票:0回答:1

我在.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命令?

谢谢

bash function alias
1个回答
0
投票

shell解释引号,因此脚本看不到您在命令行输入的内容。您需要的是

loop mysql vb -e 'select count(*) from postparsed;'

但是,同时,您需要更改脚本以将整个SQL命令保留为一个单词。只需对参数数组加双引号即可实现:

do "$@"
© www.soinside.com 2019 - 2024. All rights reserved.