0

シェルに関しては私は初心者です

このブロックは機能するはずですが、機能しません

     #!/bin/bash 
     # LOCAL CONFIGURATION SETTINGS - DB_CONFIG is a "fake" associative array
     #----------------------------------------------------------------------------------
     DB_CONFIG=(
        "DB_NAME=>"
        "DB_USER=>root"
        "DB_PASSWORD=>root"
        "DB_HOST=>127.0.0.1"
        "DB_CHARSET=>utf8"
        "DB_COLLATE=>"
     );

     for prop in ${DB_CONFIG[@]} ; do
     key=${prop%%=>*}
     value=${prop##*=>}
     echo $key;
     if[["$key" == "DB_HOST"]] then 
           db_host="$value"

     if[["$key" == "DB_PASSWORD"]] then  
           db_password="$value"

     done;


     # now set the mysql_conn string with the vars above.
     MYSQL_CON="/Applications/MAMP/Library/bin/mysql --host=$db_host -uroot -$db_password"
     exit;
     REPO='http://svn.wp-plugins.org/'

$key == 'DB_HOST'問題は、式の構文がわからない場合に条件を確認する方法です。私はそれを行う方法を調べましたが、私のMac(bash 3.2を実行している)では構文エラーについて不平を言っています。

4

3 に答える 3

1

その前に[とのためのスペースを残す必要があります];

if [ "$key" == "DB_HOST" ]; then 
      db_host="$value"
fi
于 2012-05-01T19:33:14.217 に答える
0

これは、bashスクリプトのすばらしいクイックリファレンスガイドです。

http://linuxconfig.org/Bash_scripting_Tutorial

于 2012-05-01T19:46:53.430 に答える
0

これはあなたのために働くはずです:

DB_CONFIG=(
  "DB_NAME=>"
  "DB_USER=>root"
  "DB_PASSWORD=>root"
  "DB_HOST=>127.0.0.1"
  "DB_CHARSET=>utf8"
  "DB_COLLATE=>"
);  

for prop in ${DB_CONFIG[@]}; do
  key=${prop%%=>*}
  value=${prop##*=>}

  if [[ "$key" == "DB_HOST" ]]; then 
       db_host="$value"
  elif [[ "$key" == "DB_PASSWORD" ]]; then  
       db_password="$value"
  fi  
done

echo "$db_host" "$db_password"

[[前後のスペースがありませんでした]]fiまた、CまたはJavaの閉じ括弧に対応し、bashで必要とされるsがありませんでした。さらに、ifステートメント;には条件付きテストの後が必要です。

于 2012-05-01T19:33:10.940 に答える