在 shell 脚本中,在 MySQL 命令行中将 table 名称作为参数传递

Pass as argument a table name in a MySQL command line, in a shell script

我想在 shell 脚本的 Mysql 命令行中将 table 名称作为参数传递 这是我的小 shell 脚本:

if [ "" != "" ]; then
    mysql \
        --user=genome \
        --host=genome-mysql.cse.ucsc.edu \
        -A -D hg38 \
        -e 'desc' "" \
        -B -N \
        | awk 'BEGIN {ORS="\t"};{print }' | awk '{print "#"[=13=]}'
else
    echo "Error."
fi

所以当我尝试 运行 我的脚本时:

bash Script.sh tablename

它 return 出现以下错误:

ERROR 1049 (42000): Unknown database 'tablename'

所以,有几件事供您自己参考:

由于我有多个 table 需要迭代,我别无选择。

预先感谢您的帮助。

-e 的参数必须是单个字符串。您将 table 名称作为与 desc 分开的参数,因此它被视为数据库名称参数。将其更改为:

-e "desc "

这是我的整个脚本:

#!/bin/bash

if [ "" != "" ]; then
    mysql \
        -A -D bbodb_test \
        -e "desc " \
        -B -N \
        | awk 'BEGIN {ORS="\t"};{print }' | awk '{print "#"[=11=]}'
else
    echo "Error."
fi

那我运行:

./scriptname t_users

其中 t_users 是我的 table 之一的名字。

我省略了 --user--host 参数,因为它们是从我的 ~/.my.cnf 文件中获取的,但我认为这不会有什么不同。