株価をダウンロードして変数に追加し、出力する単純な bash スクリプトがあります。
#!/bin/bash
output=" "
for stock in GOOG AAPL
do
price=$(curl -s "http://download.finance.yahoo.com/d/quotes.csv?s=$stock&f=l1")
output+="$stock: $price "
done
echo "$output"
このスクリプトは AAPL: 524.896
、フェッチされた最後のデータのみを表示します。whatswrongwithmyscriptによると、スクリプトに問題はなく、この回答を適切に実行していると思いました。この回答では、同様の問題(ループ内の文字列変数への追加)について説明し、次のように使用した別の方法を提案しました。
#!/bin/bash
output=" "
for stock in GOOG AAPL
do
price=$(curl -s "http://download.finance.yahoo.com/d/quotes.csv?s=$stock&f=l1")
output="$output$stock: $price "
done
echo "$output"
出力はまだ同じです。debian jessie x64でbash 4.2.45を使用しています。
より詳しい情報
結果をループでエコーしてデバッグしたところ、最初のスクリプトから次のようになりました。
GOOG: 1030.42
AAPL: 524.896
AAPL: 524.896
そして、2 番目のスクリプトは同じことを示します。
GOOG: 1030.42
AAPL: 524.896
AAPL: 524.896