私はシェルスクリプトを使用して残業時間を計算するプロジェクトを進めています。 2つの入力があり、私の数字が800 = 8時間を超えるかどうかを知りたいです。大きい場合は、結果を自分のテキストファイルに印刷する必要があります。私の違いを印刷する必要があります。
if [ $var1 -gt 800 ]; then
`expr $var1-800`
echo Overtime: "" >> $path
すると、計算結果を印刷する方法がわからないので、迷子になります。
答え1
最新のbashでこれを試してみてください(バックティックやを使用しないでくださいexpr
):
if ((var1 > 800)); then
overtime=$((var1 - 800)) # variable assignation with the arithmetic
echo "Overtime: $overtime"
fi
または簡単に:
if ((var1 > 800)); then
overtime="Overtime: $((var1 - 800))" # concatenation of string + arithmetic
fi
確認するbash 算術
答え2
if (( var1 > 800 )); then
printf 'Overtime: %d\n' "$(( var1 - 800 ))" >>"$path"
fi
expr
バックティックは使用されなくなり、ここではコマンドの置き換えも必要ありません。