문제

I have the following for loop in bash that creates loop devices in a chrooted directory.

for var in 0 1 2 3 .. 7
do
    MAKEDEV -d ${CHROOT}/dev -x loop$var
done

This didn't work for me as after it creates loop3 it takes .. literally and tries to create loop.. and fails. However according to this tutorial it should have worked. I got it to work by doing the following:

for (( var=0; var<=7; var++ ))
do
    MAKEDEV -d ${CHROOT}/dev -x loop$var
done

I still want to know why the for loop I tried first didn't work. Please help.

도움이 되었습니까?

해결책 2

I think you are reading the tutorial too literally. The turorial does say

for VARIABLE in 1 2 3 4 5 .. N

but taken literally this is not correct bash syntax - I think the author is simply trying to say that for this kind of for loop you need to explicitly list out all values you need to iterate over. So in your case this would be:

for var in 0 1 2 3 4 5 6 7

The tutorial also mentions brace expansion, which @glennjackman gives in his answer which is also entirely correct syntax.

다른 팁

In bash, you can write

for var in {0..7}

You cannot say

end=7
for var in {0..$end}

because brace expansion occurs before variable expansion. If you have your range points in variables, you can use a C-style for loop (as you did) or seq

for var in $(seq 0 $var)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top