0

ここに、テーブル 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

エラーの理由は何ですか??

4

2 に答える 2

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 
于 2013-11-06T18:17:28.490 に答える