![如何使用bash变量来保持运行计数?](https://linux22.com/image/128821/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8bash%E5%8F%98%E9%87%8F%E6%9D%A5%E4%BF%9D%E6%8C%81%E8%BF%90%E8%A1%8C%E8%AE%A1%E6%95%B0%EF%BC%9F.png)
我需要在 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