평일과 주말을 인쇄하는 쉘 스크립트 만들기

평일과 주말을 인쇄하는 쉘 스크립트 만들기

for 루프와 if를 사용하여 간단한 프로그램을 만드는 방법.

내 코드:

for i in mon tue wed thurs fri sat 
do
   echo weekday: $i
   if [ $i == thurs ]   
   then
      echo weekend: $i+1
   fi
done

그리고 출력:

weekday: mon
weekday: tue
weekday: wed
weekday: thurs
weekend: thurs+1
weekday: fri
weekday: sat

그러나 나는 다음과 같은 출력을 원합니다.

weekday: mon
weekday: tue
weekday: wed
weekday: thurs
weekend: fri
weekend: sat

어떤 종류의 구문을 놓쳤습니까?

답변1

주어진 코드:

for i in mon tue wed thurs fri sat 
do
 echo weekday: $i
  if [ $i == thurs ]    
    then
    echo weekend: $i+1
  fi
done
  • echo weekday: $i매 반복마다 호출됩니다.
  • 루프가 반복될 때마다 변수 for에 요소가 생성됩니다 . 예상한 배열 인덱스가 아닙니다.ii

예상되는 출력을 얻는 다양한 방법:

1) 문자열 비교 수행

for i in mon tue wed thurs fri sat 
do
    if [ $i == fri ] || [ $i == sat ]
    then
        echo weekend: $i
    else
        echo weekday: $i
    fi
done

2) 문자열을 사용하여 접두사를 저장하고 조건에 따라 수정합니다.

s='weekday'
for i in mon tue wed thurs fri sat 
do
    echo "$s: $i"
    if [ $i == thurs ]
    then
        s='weekend'
    fi
done

3) 배열 사용

days=(mon tue wed thurs fri sat)

for ((i=0; i<${#days[@]}; i++))
do
    if (( i < 4 ))
    then
        echo "weekday: ${days[$i]}"
    else
        echo "weekend: ${days[$i]}"
    fi
done

관련 정보