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
에 요소가 생성됩니다 . 예상한 배열 인덱스가 아닙니다.i
i
예상되는 출력을 얻는 다양한 방법:
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