숫자를 줄여가며 반복문을 만들기 문의드립니다.

익명 사용자의 이미지

for i in $max
do
cp -a aaa.txt aaa$max.txt
let max=max-1
done

max값은 받아오는데요, 여기서 max에 10이 입력된다면
aaa.txt파일은 aaa1~10.txt 까지 만들어져야하는데 aaa$max.txt 만 만들어지네요,,,

max값이 하나씩 줄어드는게 적용이 안되나봅니다
힌트좀 주세요-

woonuk의 이미지

max=10
 
while true
do
    if [ $max -eq 0 ]; then
        break
    fi
    cp -a aaa.txt aaa$max.txt
    let max=max-1
done

또는

max=10
 
for i in `seq $max -1 1`
do
    cp -a aaa.txt aaa$i.txt
done

planetarium의 이미지

while 문을 이용하려면

max=10
 
while [ $max -ne 0 ]; do
    cp -a aaa.txt aaa$max.txt
    let max=max-1
done

질문 올린분은 for ~ in 명령이
for i in 10; 처럼 쓰는게 아니라
for i in 1 2 3 4 5 6 7 8 9 10; 으로 써야한다는걸 간과하셨네요.

ydhoney의 이미지

일단은 for a in ???

로 쓰면 for문 내 변수는 $a 를 써야하는데 $max를 쓰신게 디버깅 불가의 가장 큰 패착. (...)

다즐링의 이미지

seq 10 -1 1
10
9
8
7
6
5
4
3
2
1

------------------------------------------------------------------------------------------------
Life is in 다즐링

ydhoney의 이미지

for i in {10..1}
do
    echo $i
done

10
9
8
7
6
5
4
3
2
1

이 방법의 문제는 초기값 변수처리가 잘 안될;;

biiiiid의 이미지

#!/bin/bash
max=10
for (( i = $max ; i >= 0 ; i-- )); do
  echo $i
done