2016-07-28 4 views
1

나는 다른 bash 스크립트를 dinamically 생성하는 스크립트를 가지고있다. 이 히어 닥 스크립트에서 카운터를 보여주는 무한 루프 (!이 작품)이 : 당신은이를 넣으면배시. 카운터와 더 많은 정보를 보여주는 무한 루프

date1=`date +%s` 
while true; do 
    echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r"; 
done 

이 루프는 잘 작동한다. 문제는 카운터뿐만 아니라 보여줄 필요가 있다는 것입니다. 더 많은 정보가 필요합니다 (일부 정적 데이터).

#!/bin/bash 
dir="/tmp/" 
my_file="generatedscript.sh" 

rm -rf "$dir$my_file" > /dev/null 2>&1 

exec 3>"$dir$my_file" 

cat >&3 <<-'EOF' 
    #!/bin/bash 
    date1=`date +%s` 
    while true; do 
     echo -ne "Info\n" # this is the damned line, if you remove it the counter works fine 
     echo -ne "Time counter: $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r"; 
    done 
EOF 

exec 3>&- 

xterm -hold -geometry 78x25+0+0 -T "Testing" -e "bash \"$dir$my_file\"" > /dev/null 2>&1 & 

이 다른 라인의 "시간"단어와 중복되는 라인을 많이하고 정보 라인과 xterm 윈도우를 보여줍니다 내 작동하지 않는 코드를 넣을 수 있습니다. 나는 Time 카운터 라인과 카운터가 실행중인 정보 라인을 별도로 보여주고 싶다. 단 한 번만!

echo echo -ne "Info \ n"카운터를 제거하면 카운터가 정상적으로 실행 중이고 한 번만 ...이 정보 위의 다른 다른 줄 (정보와 반향)을 어떻게 배치 할 수 있습니까? 되풀이? 가능하니? 이것에 도달하는 방법에 대한 아이디어? 고맙습니다.

+0

여기 왜 파일 설명자 3을 사용하고 있는지 잘 모르는 이유는 무엇입니까? 'cat> "$ dir/$ my_file"<< 'EOF'... '는 훨씬 간단합니다. – chepner

+0

'echo -ne "INFO \ n"'는'echo INFO'와 다르지 않습니다. – chepner

+0

네, 똑같은 ... 다른 일을 시도했기 때문에 ... 실패했습니다. 그리고 cat> "$ dir/$ my_file"<<이 스크립트에서 별도의 스크립트를 생성하려면 " 'EOF'가 필요합니다. 필요합니다 ... 아마도 게시물의 대상과 관련이 없습니다. 어쨌든 문제를 해결하는 방법을 알고 있습니까? 답변 주셔서 감사합니다. – OscarAkaElvis

답변

0

그냥 INFO 라인을 루프 밖으로 이동하십시오. 나는 보통 선의 시작 부분에 캐리지 리턴을 두는 것을 선호합니다. -n 또는 -e도 휴대 가능하지 않으므로 대체로 을 선호하지만 가장 단순한 용도는 echo입니다.

dir="/tmp/" 
my_file="generatedscript.sh" 

script="$tmp/$my_file" 
cat > "$script" <<'EOF' 
echo INFO 
date1=$(date +%s) 
while true; do 
    now=$(date +%s) 
    delta=$((now - date1)) 
    printf '\rTime counter: %s' "$(date -u --date "$delta" +%H:%M:%S)" 
done 
EOF 
chmod +x 500 "$tmp/$my_file" 
xterm -hold -geometry 78x25+0+0 -T "Testing" -e "$script" > /dev/null 
+0

감사합니다 .. 정보 라인이 루프에서 작동합니다! ...하지만 카운터에 왼쪽으로 두 번째가 있다고 생각합니다. o_O 내 카운터를 사용하겠습니다. 어쨌든 아이디어를위한 thx! – OscarAkaElvis

+0

초를 초과하면 초가 충돌합니다 ... xd – OscarAkaElvis