如何使用bash变量来保持运行计数?

如何使用bash变量来保持运行计数?

我需要在 bash 中编写一个脚本来根据用户键盘输入保持运行计数

if i type "1" i want a variable $h to increment +1

if i type "2" i want a variable $L to decrement -1

我想让变量 $c 输出前两个变量的总和。

我已经尝试过:无济于事

#!/bin/bash

h='0'
l='0'

read card

if [$card='1']
then 
  let "h++"
fi
if [$card='2']
then
  let "l--"
fi

c=$(($h+$l))

echo $c`

我哪里搞砸了?

答案1

  • [ $card -eq 1 ]- 错误,[必须有空格并且-eq必须用于算术比较

  • $c<- 您那里有一个尾随反引号,因此请将其删除。

  • 没有错,只是一个建议:let var++ 不需要双引号,$((var++))也不需要$(“尊重”运算符,可以这么说)。
  • 没有错,但没有必要:数字赋值中的单引号h=0

“运行计数”的整个想法可能是一个问题:您的脚本是连续的,因此根据定义,一旦脚本退出,变量就会消失。您的运行计数不会仅仅因为 shell 的工作原理而被计算在内。您可能想要做的是将计数器输出到临时文件,然后读回它们。或者,让脚本在无限 while 循环中运行。就像是:

#!/bin/bash
h=0
l=0
while read user_input;
do
    [ "$user_input" -eq 1 ] && ((h++))
    [ "user_input" -eq 2 ] && ((l--1))

    echo "So far h is $h, and l is $l"
done

相关内容