2014-10-23 2 views
-2

제발 내가 잘못한 오류를 반환하는 코드가 있습니다.쉘 : for 루프는 구문 오류를 반환합니다.

#!/bin/bash 
YESTERDAY="$(date -d '1 day ago' '+%Y%m%d')" 

LOGDIR=/tm/ 

for ssp in {1,2,3,4,5,6,7,8};do 

    for hour in {00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23};do 
    logFilee="$LOGDIR"log_$YESTERDAY"$hour"_s_$ssp.txt 
    logFile2e="$LOGDIR"log_$YESTERDAY"$hour"_s_dr_$ssp.txt 
    echo $logFilee 
    echo $logFile2e 



    done; 
done; 

출력은 다음과 같습니다

/tmp/log_20141022{00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23}_s_{1,2,3,4,5,6,7,8}.txt 
/tmp/log_20141022{00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23}_s_dr_{1,2,3,4,5,6,7,8}.txt 

이 출력이 정확하지 않습니다!

당신을 감사

+1

을 내가 재현 할 수 있습니다 산출. 당신이 쓴 스크립트는 예상대로 작동합니다. –

+1

스크립트를 어떻게 실행하고 있습니까? 'sh scriptname'으로 실행하면'bash'가 아니라'sh'에 의해 실행됩니다. 어쨌든'{foo, bar, ...} '구문을 사용하는 것은 의미가 없습니다. 당신은'for ssp for 1 2 3 4 5 6 7 8;을 쓸 수 있습니다. do' –

+0

sh 명령으로 실행했지만 작동하지 않습니다. – mond14

답변

0

그것을 작성하는 간단 할 것입니다 : 당신이 다음 bash는 4가없는 경우

for ssp in {1..8}; do 
    for hour in {00..23}; do 
     ... 
    done 
done 

가 대신 사용할 수 있습니다

for ssp in {1..8}; do 
    for hour in $(seq -w 0 23); do 
     ... 
    done 
done 
+0

시도했지만 출력이 올바르지 않습니다. /tmp/log_20141022000102030405060708, 091011121314151617181920,21,22,23_s_1,2,3,4,5,6,7,8.txt tmp/log_2014102200 , 0102030405060708091011121314151617181920,21,22,23_s_drc_1,2,3 , 4,5,6,7,8.txt – mond14

+0

그 쉼표는 어디에서 오는가? 내 대답에는 쉼표가 없습니다. –

+0

코드를 복사하고 지나서, 나는 목록이라고 생각합니다! 그러나 나는 길을 모른다! – mond14

관련 문제