使用bash脚本从MySql显示数据时出错

时间:2013-11-06 06:27:34

标签: mysql sql bash shell

这里我有一个包含表emp的数据库msmdb。 我试图使用bash脚本显示该表中的值,但是出现错误,指出找不到命令(在回显后的第8行)。

USER_NAME=root    
USER_PWD=prj    
DB_NAME=msmdb

flag=0     
delimiter="a3f4g52"

echo "select id ,'"$delimiter"', name,'"$delimiter"', city, '"$delimiter"', salary FROM emp" | \ 

mysql -u $USER_NAME --password=$USER_PWD --database=$DB_NAME | \ 

while read row ; 
do

   if [ $flag == 0 ]; then 
      flag=1 

   else 
      name=` echo $row | \ 
             awk -F "$delimiter" '{print $1}' | \ 
             sed -e 's/ *$//' | sed 's/^ *//'` 

      age=` echo $row | \ 
            awk -F "$delimiter" '{print $2}' | \ 
            sed -e 's/ *$//' | sed 's/^ *//'` 

      bornPlace=`echo $row | \ 
                 awk -F "$delimiter" '{print $3}' | \ 
                 sed -e 's/ *$//' | sed 's/^ *//'` 

      echo ">$name<"
      echo ">$age<"
      echo ">$bornPlace<"

   fi 
done

任何关于错误原因的想法?

2 个答案:

答案 0 :(得分:0)

在第8行中,您在换行符后面有一个空格(\),因此换行符不起作用。

答案 1 :(得分:0)

让脚本正常工作......

只需从程序中删除'\'即可。

正确的bash脚本是

USER_NAME=root 
USER_PWD=prj
DB_NAME=msmdb 
flag=0 
delimiter="a3f4g52" 

echo "select id ,'"$delimiter"', name,'"$delimiter"', city, '"$delimiter"', salary FROM emp" |
mysql -u $USER_NAME --password=$USER_PWD --database=$DB_NAME |  

while read row ; 
do 
   if [ $flag == 0 ]; then 
      flag=1 
else 
      name=` echo $row | awk -F "$delimiter" '{print $1}' | sed -e 's/ *$//' | sed 's/^ *//'` 
      age=` echo $row | awk -F "$delimiter" '{print $2}' | sed -e 's/ *$//' | sed 's/^ *//'` 
      bornPlace=` echo $row | awk -F "$delimiter" '{print $3}' | sed -e 's/ *$//' | sed 's/^ *//'` 

   echo ">$name<" 
   echo ">$age<" 
   echo ">$bornPlace<" 
fi 
done