실행 횟수를 유지하기 위해 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

"실행 횟수"라는 전체 개념에 문제가 있을 수 있습니다. 스크립트가 연속적이므로 정의에 따라 스크립트가 종료되면 변수가 사라집니다. 쉘 작동 방식 때문에 실행 횟수가 계산되지 않습니다. 아마도 당신이 원하는 것은 카운터를 임시 파일로 출력한 다음 다시 읽는 것입니다. 또는 무한 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

관련 정보