Bashの算術構文

Bashの算術構文

次の算術値エラーが発生します。

#!/bin/bash
n=0
line_count=9
line_count=$(line_count)/3
echo $line_count
exit 0

予想結果は3

[]$ ./test.sh
./test.sh: line 4: line_count: command not found
/3
[]$ more test.sh

答え1

補う@Kusalanandaの返信、標準構文に加えて、次のようになりますsh

line_count=$((line_count / 3))

bashから継承された次の構文を使用することもできます(kshでも利用可能zsh)。

  • ((行数 = 行数/3))
  • ((行数/= 3))
  • line_count/=3にしておきます
  • 組版-i 行数 = 行数/3

bash(およびzsh)は以下もサポートしています。

  • 行数=$[行数/3]

以前のPOSIX以前のBourne / Almquistの場合sh

line_count=`expr "$line_count" / 3`

答え2

bash算術拡張は他のシェルによって行われます$(( ... ))

line_count=$(( line_count/3 ))

を使用すると、サフィックス付きの変数line_count=$(line_count)/3にコマンドの出力を割り当てることができます。line_countline_count/3

これが「line_count:command notfound」エラーが発生した後に出力される理由です/3

ShellCheckを見てくださいhttps://www.shellcheck.net/ 一般的な問題があるかどうかスクリプトを確認してください。この場合、$(...)必要なものを見つけることはできませんが、これは完全に正当なシェルコードである$((...))ためです。$(line_count)それは間違ったことをするだけです。

関連情報