.bash_aliases 中的函数不接受完整的命令字符串
Function in .bash_aliases not accepting full command string
我在.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;'"
所有这些 return 一个 mysql 无效的命令行参数错误,因为没有将整个字符串传递给 mysql。
mysql Ver 15.1 Distrib 10.4.12-MariaDB, for debian-linux-gnu (x86_64)
using readline 5.2 Copyright (c) 2000, 2018, Oracle, MariaDB
Corporation Ab and others.
Usage: mysql [OPTIONS] [database]
我也证实了这一点:
loop echo mysql vb -e 'select count(*) from postparsed;'
mysql vb -e select count(*) from postparsed;
mysql vb -e select count(*) from postparsed;
我觉得不错。
我错过了什么?为什么 loop() 函数没有正确处理我的 mysql 命令?
谢谢
shell 解释引号,因此脚本看不到您在命令行输入的内容。你需要的是
loop mysql vb -e 'select count(*) from postparsed;'
但与此同时,您需要更改脚本以将整个 SQL 命令保持为一个单词。只需双引号参数数组即可实现:
do "$@"
我在.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;'"
所有这些 return 一个 mysql 无效的命令行参数错误,因为没有将整个字符串传递给 mysql。
mysql Ver 15.1 Distrib 10.4.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Usage: mysql [OPTIONS] [database]
我也证实了这一点:
loop echo mysql vb -e 'select count(*) from postparsed;'
mysql vb -e select count(*) from postparsed;
mysql vb -e select count(*) from postparsed;
我觉得不错。
我错过了什么?为什么 loop() 函数没有正确处理我的 mysql 命令?
谢谢
shell 解释引号,因此脚本看不到您在命令行输入的内容。你需要的是
loop mysql vb -e 'select count(*) from postparsed;'
但与此同时,您需要更改脚本以将整个 SQL 命令保持为一个单词。只需双引号参数数组即可实现:
do "$@"