这里我有一个包含表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
任何关于错误原因的想法?
答案 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