Shell脚本获取MySQL表Max(Id)+1含列名,如何仅保留数字生成新表名?
解决MySQL查询结果带列名导致变量拼接错误的问题
你遇到的问题是因为默认情况下,mysql命令执行查询会输出列名(也就是Max(Id)+1这部分),所以需要调整命令只返回纯数字结果,下面是两种可行的修改方法:
方法一:使用mysql的-N参数取消列名输出
直接在mysql命令中添加-N参数,它会禁止输出列标题,只返回查询的数值结果:
TABLE_NUMBER=$(mysql -N -u $2 $3 -h $4 -e "SELECT Max(Id)+1 FROM TableofInterest;" db_name) echo "table number is" echo $TABLE_NUMBER LATESTID="Interest_${TABLE_NUMBER}_Map" echo $LATESTID
方法二:用awk提取结果中的数字字段
如果不想修改mysql参数,也可以通过awk提取输出中的第二个字段(也就是数字部分):
TABLE_NUMBER=$(mysql -u $2 $3 -h $4 -e "SELECT Max(Id)+1 FROM TableofInterest;" db_name | awk '{print $2}') echo "table number is" echo $TABLE_NUMBER LATESTID="Interest_${TABLE_NUMBER}_Map" echo $LATESTID
两种方法都能让你得到期望的输出Interest_3_Map,推荐第一种方法,更直接高效。
内容的提问来源于stack exchange,提问作者user3296793
相关产品推荐
相关产品推荐

