Bashで変数を配列の長さに設定中にエラーが発生しました。

Bashで変数を配列の長さに設定中にエラーが発生しました。

デフォルトでは、元帳から残高を2つの配列に取り、必要な方法で印刷できる大きなスクリプトに次のコードがあります。

#!/bin/bash
assets=("assets:checking" "assets:google wallet" "assets:savings" "assets:cash")
assets-bal=()

num=${#assets[@]}
for $i in {0..${num}}
do
  read -a tmp <<< `ledger -f finances balance "${assets[${i}]}"`
  assets-bal[${i}]=tmp[0]
  echo "${assets[${i}]}   ${assets-bal[${i}]}"
done

スクリプトを実行しようとするたびにエラーが発生します。

syntax error near unexpected token `num=${#assets[@]}'
`num=${#assets[@]}'

私の検索結果はその行に問題があってはいけません。なぜそれがうまくいかないのかを調べるために空のままにしておきました。

誰もが私が間違っている場所を指摘できますか?

ベストアンサー1

問題は次のとおりです。

assets-bal=()

変数名にダッシュを含めることはできません。下線のみ使用できます。

bashどのように説明するのかわかりませんが、assets-bal=()コマンドが不完全で他の行で完了する必要があると思います。どういう意味かを見るには、シェルでこの行を実行してみてください。

おすすめ記事