次の算術値エラーが発生します。
#!/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_count
line_count
/3
これが「line_count:command notfound」エラーが発生した後に出力される理由です/3
。
ShellCheckを見てくださいhttps://www.shellcheck.net/
一般的な問題があるかどうかスクリプトを確認してください。この場合、$(...)
必要なものを見つけることはできませんが、これは完全に正当なシェルコードである$((...))
ためです。$(line_count)
それは間違ったことをするだけです。