2017-07-31 13 views
1

同じ質問からの回答で配列を減算しようとしましたが、動作しませんでした。Bashで減算配列が機能していない

res=((${arr_new_file[$i]}-${arr_old_file[$i]})) 

私は本当にそれを取得しません。常に以下のようになります。

syntax error: operand expected (error token is "-")

+0

* 'bash' *でこれを実行していますか? '/ bin/sh'ではなく'/bin/bash'を意味しますか?はいの場合、あなたのbash版は何ですか? – hek2mgl

+0

@ hek2mglはい/ bin/bashにあります とその:GNU bash、バージョン4.1.2(1)-release(x86_64-redhat-linux-gnu) –

+2

私は使用する以外は何もエラーはありません'(())の代わりに' $(()) 'を使います。 'arr_new_file'と' arr_old_file'は正しく定義されていますか?私は 'arr_old_file'が' bash'環境の中で定義されていないときだけあなたのエラーを再現することができました。 –

答えて

4

算術置換前に$を入れるのを忘れました。

res=$((${arr_new_file[$i]}-${arr_old_file[$i]})) 

可愛いライン:

let res=arr_new_file[$i]-arr_old_file[$i] 
0

どちらかそれはhedgar2017をlikgeんが言ったか、私が読み少し簡単に検討する

((res=arr_new_file[$i]-arr_old_file[$i])) 

としてそれを書きます。

+1

res = arr_new_file [$ i] -arr_old_file [$ i]を読みやすくすることができます。 – hedgar2017

+0

私は個人的に 'let'をあまり好きではありません - ' let a = 5 b = xc = -1'のような単純な言葉で複数の代入を書くことを除いては、式が複雑になればなるほど、読みやすくするために空白を挿入する可能性が高くなります。もちろん、この場合は 'let'を使うのが良い選択です。 – user1934428

関連する問題