shell script 문법 for, cut 에 관해

domiisa의 이미지

코딩중 안되서 테스트 하려고 만들었는데 생각대로 안되네요..
제가 잘못 이해하고 있는듯 한데 한수좀..

목표: 현재 제 쉘 위치에는 199912 201112 201201 333333 <-이렇게 4개의 폴더가 있고
aaa.sh , asdf.txt <- 이렇게 2개의 파일이 있습니다.
var 변수안에 폴더이름 1~4번째자리를 var2에는 5~6번째 문자 넣으려고 합니다.

소스
#!/bin/sh
for dir in ??????
do
if [ -d $dir ]; then
var=$dir | cut -c1-4
var2=$dir | cut -c5-6
echo $var
echo $var2
fi
done

이렇게 하면 제생각으로는
문자열 길이 6자리인것중에(??????) 그것이 폴더이면 안에것 실행한다 이런뜻인데

예상 output은

1999
12
2011
12
2012
01
3333
33

이렇게 나와야하는데 현실은

1999
2011
빈칸
빈칸
위에꺼 4번 반복해서 나옵니다.

제가 짠 소스 해석좀 부탁드립니다.output이 왜 이렇게 나오는지 이해가 안감니다.
그리고 예상대로 나올려면 어느것을 수정해야할지 힌트좀 주시면 ㄳ 하겠습니다.

planetarium의 이미지

원하시는게

var=`echo $dir | cut -c1-4`
var2=`echo $dir | cut -c5-6`

였던듯 합니다.

#!/bin/sh 대신 #!/bin/bash 를 쓸수 있다면

var=${dir:0:4}

이런 식으로 바꾸면 더 간단합니다.

domiisa의 이미지

오!! planetarium 님 ㄳ합니다. 해결됐네여 ㅎ

`이문자를 사용해줘야하는군요.잘배워갑니다