2014-11-21 3 views
0

csv 파일에 여러 변수를 인쇄 할 수 있기를 원합니다. 변수는 파일 유형에 따라 다릅니다. 또한 특정 변수를 옵션으로 지정할 수도 있습니다. 예를 들어 내가 그것은 다음과 같이 실행 할 생각이라고 : 주어진지정된 줄 수에 대해 CSV 파일로 인쇄 할 Bash 스크립트

./pickafile.sh format1 date time(optional) duration(optional) 

예 :

./pickafile.sh watchtv 21112014 150000 10 

이 할 것

#!/bin/sh 

var1=date (format DDMMYYYY) 
time=time (format HHMMSS) 
var2=duration (in seconds) 
var3='Watchtv' 
cheese='Cheddar' 
num=20 #number times to print 

case $file_type in 
    watch_tv) 
     cheese='stilton' 
for i in 1..$num 
do 

## print to a csv file each row adding the 
echo $var1,$time+$var2,$var2,$var3,$cheese > $watch_tv.csv 
done 
     ;; 
    watch_ppl) 
     echo 'watch ppl??' 
     ;; 
    watch_animals) 
     echo $'wahtc animals?' 
     exit 1 
     ;; 
    *) 
     echo "Unknown file- sure it isn't toxic?" 
esac 

done 
exit 

다음을 이렇게 파일의 출력이 60 초를 추가 보일 것이다 각 시간대 20 회

21112014,150000,10,Watchtv,stilton 
21112014,150010,10,Watchtv,stilton 
21112014,150020,10,Watchtv,stilton 
21112014,150030,10,Watchtv,stilton 
21112014,150040,10,Watchtv,stilton 
21112014,150050,10,Watchtv,stilton 
21112014,150100,10,Watchtv,stilton 
etc 

답변

0

의사 코드를 실제 코드로 변환하여 몇 가지 붙여 넣기 오류를 수정했습니다. 나머지 작업을 수행 할 수 있다고 확신합니다.

#!/bin/sh 

# $ date; date --date='now +10 Seconds' 
# Fri Nov 21 17:28:33 CET 2014 
# Fri Nov 21 17:28:43 CET 2014 

var1=$(date '+%d%m%Y') # date (format DDMMYYYY) 
time=$(date '+%H%M%S') # time (format HHMMSS) 
var2=$4 # duration (in seconds) 
if [ "" = "$var" ]; then 
    var2=10 # default value 
fi 
# var3='Watchtv' 
cheese='Cheddar' # default cheese 
num=20 #number times to print 

case $file_type in 
    watch_tv) 
     cheese='stilton' 
     ;; 
    watch_ppl) 
     echo 'watch ppl??' 
     ;; 
    watch_animals) 
     echo $'wahtc animals?' 
     exit 1 
     ;; 
    *) 
     echo "Unknown file- sure it isn't toxic?";; 
esac 

for ((i=1; i<=$num; i++)); do 
    offset=$((var2*i)) # calculate the offset 
    ## print to a csv file each row adding the 
    #echo $var1,$time+$var2,$var2,$var3,$cheese > $watch_tv.csv 
    echo "$(date '+%d%m%Y' --date="now +$offset Seconds"),$(date '+%H%M%S' --date="now +$offset Seconds"),$var2,$var3,$cheese" 
done 

출력

:

$ bash는 script.bash의 watchtv 21112014 150000 10

Unknown file- sure it isn't toxic? 
21112014,174412,10,,Cheddar 
21112014,174422,10,,Cheddar 
21112014,174432,10,,Cheddar 
21112014,174442,10,,Cheddar 
21112014,174452,10,,Cheddar 
21112014,174502,10,,Cheddar 
21112014,174512,10,,Cheddar 
21112014,174522,10,,Cheddar 
21112014,174532,10,,Cheddar 
21112014,174542,10,,Cheddar 
21112014,174552,10,,Cheddar 
21112014,174602,10,,Cheddar 
21112014,174612,10,,Cheddar 
21112014,174622,10,,Cheddar 
21112014,174633,10,,Cheddar 
21112014,174643,10,,Cheddar 
21112014,174653,10,,Cheddar 
21112014,174703,10,,Cheddar 
21112014,174713,10,,Cheddar 
21112014,174723,10,,Cheddar 
+0

감사합니다. 당신 정말 대단하네요 :-) – hobbyscripter

관련 문제