2017-06-28 8 views
0

データベーステーブルの特定の列の値をシェルスクリプトのそれぞれの入力文字列と比較したいと思います。これどうやってするの? 次のスクリプトでは、すべての顧客の値を読み取るが、最初の値のみを読み取る。私に何ができる?データベーステーブルの特定の列とそれぞれの文字列を比較する方法

customer=$(sqlite3 $databasename.db "select cus_name from $table_name"); if [[ $c_name != $customer ]];

#!/bin/bash 

echo " --- Enter the Database name ---" 
read databasename 

echo " --- enter the table name --- " 
read table_name 

sqlite3 $databasename.db "DROP TABLE IF EXISTS $table_name;" 

sqlite3 $databasename.db "CREATE TABLE IF NOT EXISTS $table_name(cus_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,cus_name TEXT NOT NULL UNIQUE ,cus_domain TEXT UNIQUE, cus_status TEXT NOT NULL,Port INTEGER NOT NULL);" 


echo " --- Enter the total number of customer records do you want ---" 
read cus_count 


echo "--- Enter the following details one by one---" 

port_num=8080 

for((i=1;i<=cus_count;i++)) 
do 


echo "enter the $i customer details" 

echo "---Enter the customer name---" 
read c_name 

customer=$(sqlite3 $databasename.db "select cus_name from $table_name"); 


if [[ $c_name != $customer ]]; 

then 
    echo "---Enter the Status(Active/Inactive)---" 
    read c_status 

if [[ "$port_num" == "$port_num" ]]; then 
     port_num=$(($port_num + 1)) 

c_domain="$c_name" 


sqlite3 $databasename.db "INSERT OR IGNORE INTO $table_name (cus_name,cus_domain,cus_status, Port) VALUES(\"$c_name\",\"${c_domain,,}.in\",\"$c_status\",\"$port_num\") ;" 
fi 


else 
    echo "!!!OOPS you entered customer name already available!!!" 
    echo "---Please enter new customer name---" 

i=$(($i - 1)) 

fi 
done 
done 

echo " --- Records from the $table_name ---" 

sqlite3 $databasename.db "select * from $table_name;" 
+0

を行うその後、bashの配列

declare -a customer_list customer_list=("$(sqlite3 "$databasename".db "select cus_name from $table_name")") 

を使用し、問題のコードの関連部分のみを入れてください。 – sjsam

+0

customer = $(sqlite3 $ databasename.db "select cus_name from $ table_name"); の場合[[$ c_name!= $ customer]]; then ---- – Mahendranatarajan

+0

私はすでに問題のコードを見ました。私はちょうどその部分だけが問題を再現するのに十分であったと言っていました。また、私はあなたの特定の問題の解決策を追加しました – sjsam

答えて

0

for customer in "${cus_array[@]}" 
do 
if [[ "$c_name" != "$customer" ]] 
then 
.. 
fi 
done 
+0

が正しく動作しません。 – Mahendranatarajan

+0

@Mahendranatarajanは 'customer_list =(" $(sqlite3 "$ databasename" .db "select table_name") ")' ''の直後に 'echo" $ {customer_list [@]} "正しく再構築されています。 – sjsam

+0

最後の3つの値だけが完全に表示されない – Mahendranatarajan

関連する問題