8

mysql コマンド ( --table パラメーターを使用) からのクエリ結果を解析しています

local records=`echo "${query}" | $MYSQL -u $MyUSER -h $MyHOST -p$MyPASS --table`

クエリは正常に実行され、良好なデータを受け取りました。

次に、このデータを反復処理します。

for data in $records ;
do
    test+=$data
done

コードはより広範囲ですが、基本的にはこれで終わりです。ただし、Bash はすべてのスペースを区切り記号と見なしますが、これはテキスト フィールドの問題です。

だから私はそれらを連結するだけです。しかし、このデータを bash にフィードすると:

*URL*
host:
test.url.com
pass:
anothertest

http://www.test.com

次のようなものに連結します。

pass:test.url.com.com

あたかも連結ではなく、上書きするかのように。これはおそらくキャリッジリターンの問題ですか?

4

4 に答える 4

7

Unix の行末を使用していることを確認してください。Windows の行末を使用すると、同じ動作が発生し、文字列が上書きされました。

于 2015-03-09T16:34:17.987 に答える
2

Bash 3 以降を使用していることを確認してください。Bashの+=演算子を使用して配列を操作できます。変数の現在の値を使用しIFSてトークンを分割し、値を配列に追加します。

試してください: test="$test $data"データを連結する

于 2012-09-10T20:21:51.420 に答える
0

行区切り記号に問題がある場合は、 IFS変数の設定を確認してください。

何かのようなもの

IFS="\n"

+=また、BASHのバージョンによっては配列操作にフォールバックする可能性があるため、注意が必要です。

于 2012-09-10T20:27:04.137 に答える