For 루프 리눅스 스크립트

브렌
  1. 사용자에게 채점 할 논문 수를 물어 봅니다.
  2. 각 논문의 점수를 입력하는 데 필요한 시간을 반복하는 for 루프를 만듭니다.
  3. 사용자에게 각 점수 (1-100)를 묻습니다.
  4. 루프 수를 세다
  5. 프로그램이 끝나면 모든 논문의 평균 점수를 표시합니다.

while 루프에 대해 하나를 수행했지만 for 루프를 수행하는 방법을 모르겠습니다.

#!/bin/bash

set -x

count=0
papers=0
score=0
grade=0
average=0

read -p " How many papers would you like to grade? " papers

while [ $count -lt $papers ]
do
    read -p " Please enter a score " grade
    score=`expr $score + $grade`
    count=$((count + 1))
done

average=`expr $score / $papers`
echo $average
Kusalananda

지침을 무시하고 내 머리에 따라 수행합니다 (어쨌든 점수를 계산해야한다면 점수 (점 1)를 사용자에게 요청할 필요가 없기 때문에 지침은 가짜입니다 (점 4)).

awk 'BEGIN              { printf("Enter scores, one per line, end with Ctrl+D\n") }
     $1 < 1 || $1 > 100 { printf("Invalid score, must be [1,100]\n"); next }
                        { sum += $1; n++ }
     END                { printf("Average: %.2f\n", sum/n) }'

테스트 :

Enter scores, one per line, end with Ctrl+D
0
Invalid score, must be [1,100]
2
3
4
5
99
100
1001
Invalid score, must be [1,100]
Average: 35.50

이렇게하면 awk스크립트 로의 리디렉션을 사용하여 파일에서 점수를 쉽게 읽을 수 있습니다 .

에서 동일합니다 /bin/sh(그러나 정수가 아닌 입력 / 결과를 처리하지 않음) :

#!/bin/sh

echo 'Enter scores, one per line, end with Ctrl+D'
while read score; do
    if [ "$score" -lt 1 ] || [ "$score" -gt 100 ]; then
        echo 'Invalid score, must be [1,100]'
    else
        sum=$(( sum + score ))
        n=$(( n + 1 ))
    fi
done

printf 'Average: %d\n' "$(( sum / n ))"

점수 수를 요구한다면 범위를 벗어난 점수를 다르게 처리해야합니다.

#!/bin/sh

printf 'Enter the number of scores that you will enter: ' >&2
read nscores

while [ "$nscores" -gt 0 ]; do
    while true; do
        read score
        if [ "$score" -lt 1 ] || [ "$score" -gt 100 ]; then
            echo 'Invalid score, must be [1,100]'
        else
            break
        fi
    done

    sum=$(( sum + score ))
    n=$(( n + 1 ))

    nscores=$(( nscores - 1 ))
done

printf 'Average: %d\n' "$(( sum / n ))"

죄송합니다. 또 다른 while루프입니다.

for루프는, 쉘 스크립트에서, 오직 같은 파일 이름의 목록으로, 명시 적으로리스트를 사용한다. for이 연습에서 루프를 사용하여 해결하기 위해 쉘 스크립트를 작성하는 경우 전혀 필요하지 않습니다.

for이 연습 문제를 해결하기 위해 루프를 사용할 수있는 합리적인 사용 사례 :

#!/bin/sh

for score do
    if [ "$score" -lt 1 ] || [ "$score" -gt 100 ]; then
        printf 'Invalid score (%d), must be [1,100]\n' "$score" >&2
    else
        sum=$(( sum + score ))
        n=$(( n + 1 ))
    fi
done

printf 'Average: %d\n' "$(( sum / n ))"

이 스크립트는 명령 줄에서 점수를받습니다.

$ sh ./script.sh 1 20 10 22 3001 20
Invalid score (3001), must be [1,100]
Average: 14

점수 목록은 정적 목록이므로 루프를 사용하여 반복하는 것이 적절합니다 for.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 스크립트 스크롤 Div 루프

분류에서Dev

Powershell 스크립트-루프 중단

분류에서Dev

Bash 리눅스 루프 쓰루 파일 및 이메일 보내기

분류에서Dev

AppleScript : 자바 스크립트의 루프

분류에서Dev

Bash 스크립 루프에서 expect 스크립트 호출

분류에서Dev

쉘 스크립트 변수 및 루프

분류에서Dev

bash 스크립트-루프 함수

분류에서Dev

For 루프 구문 bash 스크립트

분류에서Dev

루프로 자바 스크립트 선 그리기

분류에서Dev

for 루프에 대한 배치 스크립트 쿼리

분류에서Dev

각 루프 자바 스크립트에서 태그 늘리기

분류에서Dev

자바 스크립트 루프 프로

분류에서Dev

조건부 쉘 스크립트 루프

분류에서Dev

while 루프 쉘 스크립트

분류에서Dev

PHP foreach 루프의 Jquery 스크립트

분류에서Dev

자바 스크립트 리디렉션 루프

분류에서Dev

자바 스크립트 루프에 PHP

분류에서Dev

루프 내에서 자바 스크립트 함수 처리

분류에서Dev

자바 스크립트의 for 루프 함수 내부의 for 루프

분류에서Dev

루프 용 배치 스크립트

분류에서Dev

Python 스크립트의 루프

분류에서Dev

자바 스크립트 루프 평가

분류에서Dev

자바 스크립트 루프 계산

분류에서Dev

쉘 스크립트 : 16 진 루프

분류에서Dev

루프 내 스크립트 표준

분류에서Dev

Bash 스크립트 계산기 루프

분류에서Dev

루프 스크립트 오류

분류에서Dev

칼리 리눅스의 프록시

분류에서Dev

자바 스크립트 루프 성능