在管道MySQL命令(bash)

时间:2017-10-26 10:11:02

标签: mysql bash

有没有办法避免下面第一个eval代码?我尝试使用${LASTPIPE[0]}这样的东西,但这对我来说太复杂了。例如,当我尝试使用分号($MYSQLCOMMAND; if ...)注入代码时,它将输出分解为管道。我花了8个多小时徘徊StackOverflow只是为了放弃并再写一个没有管道的SQL命令。不想发布糟糕的书面代码。

MYSQLQUERY="select * from $TABLENAME"
MYSQLTOPTIONS="--defaults-extra-file=$EXTRA -h $HOSTNAME -D $DBNAME -N -e"
MYSQLCOMMAND='mysql $MYSQLTOPTIONS "$MYSQLQUERY"'

# Exit immediately if something wrong with MySQL command

if eval "$MYSQLCOMMAND > /dev/null" ; then : ; else \
printf "Script returned non-zero exit code: %s\n" "$?" ; exit $?; fi

# Count rows for valid JSON output

ROWS=0

eval $MYSQLCOMMAND | \
while read ; \
do  
    ((ROWS++))  
done

(rest of the code generates JSON with calling the same 
eval ... while read... and verified by https://jsonlint.com/)

此外,我想听听您对代码的任何评论,因为我不是经验丰富的bash编码器。

0 个答案:

没有答案