아카이브에서 $20를 지속적으로 인출하는 방법

아카이브에서 $20를 지속적으로 인출하는 방법

잔액이 고갈될 때까지(또는 잔액이 20달러 미만이 될 때까지) 계좌에서 계속해서 20달러를 인출하는 스크립트를 작성하는 방법입니다. 완료되면 사용자에게 20달러 지폐를 몇 장 받았는지 알려주어야 합니다. 계정 파일을 지정하려면 매개변수를 사용해야 합니다.

이것이 내가 지금까지 스크립트에 가지고 있는 것입니다.

file1=$(cat $1)
while (( file1  >= 20 ))
do
echo $(($file1 - 20)) > $1
done

누구든지 도울 수 있다면 좋을 것입니다! 감사해요!

답변1

스크립트가 거의 완성되었습니다.

당신이 해야 할 유일한 일은 인출을 계산하는 카운터를 유지하는 것입니다.

사람들이 의견에서 제안한 것처럼 변수에 이해하기 쉬운 이름을 지정해야 합니다.

balance=$(cat "$1")
count=0

while (( balance  >= 20 ))
do

    (( ccount++ ))
    echo $(( balance -= 20)) > "$1"
    balance=$(cat "$1")

done
printf '%d withdrawals\n' $count 

모든 단계에서 파일을 업데이트하지 않으려면 훨씬 더 간단합니다.

balance=$(cat "$1")
count=0

while (( balance  >= 20 ))
do

    (( ccount++ ))
    (( balance -= 20))

done
printf '%d\n' $balance > "$1"
printf '%d withdrawals\n' $count 

답변2

또는...거래 기록을 유지하려면 계정을 업데이트하고 라인 수를 계산하세요. - 1(원래 잔액)

balance=$(cat account)
while (( balance >= 20 )); do 
    (( balance -= 20 ))
    echo $balance >> account;
done
echo "$(( $(cat account | wc -l)-1 )) transactions were made and your balance is \$$(tail -n 1 account)"

관련 정보