能滚动文字的脚本哦^^

sh/bash/dash/ksh/zsh等Shell脚本
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

#16

帖子 HuntXu » 2008-08-18 22:51

空格先转义? :evil:
HUNT Unfortunately No Talent...
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#17

帖子 xiooli » 2008-08-18 22:57

HuntXu 写了:空格先转义? :evil:
仍然不行滴 :lol:
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#18

帖子 lonelycorn » 2008-08-18 23:04

没找到呢。我自己编了一个但是效果相当不好。变成隔一行读一个了。我自己也搞不明白了。

代码: 全选

lonelycorn@untbook:~$ cat abc
lkjlksdf lkjsdlkfj   dfjlkjwelr
lkjsd jklerjncvlkj this sucks!!
sldkjflkwe  sdjlkj
sdfljk xlkcjlsf
lskdjfl saldkfjl  adfl

lonelycorn@untbook:~$ cat xxx 
#!/bin/bash
exec 10<&0
exec < abc
n=0
while read arr[`expr $n + 1 `]
do
	let n+=1
	read arr[${n}]
done
exec 0<&10 10<&-
for (( i=0; i<${#arr[@]}; i++ ));do echo ${arr[${i}]}; done
lonelycorn@untbook:~$ ./xxx

lkjsd jklerjncvlkj this sucks!!
sdfljk xlkcjlsf


我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#19

帖子 lonelycorn » 2008-08-18 23:20

基本完成了。就是还有个空行。

代码: 全选

lonelycorn@untbook:~$ cat abc
lkjlksdf lkjsdlkfj   dfjlkjwelr
lkjsd jklerjncvlkj this sucks!!
sldkjflkwe  sdjlkj
sdfljk xlkcjlsf
lskdjfl saldkfjl  adfl
lonelycorn@untbook:~$ cat xxx
#!/bin/bash
declare -a arr
exec 10<&0
exec < abc
n=0
while read arr[$(( $n + 1 ))]
do
	let n+=1
done
exec 0<&10 10<&-
echo ${#arr[*]}
for (( i=0; i<${#arr[@]}; i++ ));do echo ${arr[${i}]}; done
lonelycorn@untbook:~$ ./xxx
6

lkjlksdf lkjsdlkfj dfjlkjwelr
lkjsd jklerjncvlkj this sucks!!
sldkjflkwe sdjlkj
sdfljk xlkcjlsf
lskdjfl saldkfjl adfl

我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#20

帖子 lonelycorn » 2008-08-18 23:29

完成了。原来最后一个read有问题。
那个exec完全是我为了偷懒才加的。你可以在while外面加上个{}再重定向到abc

代码: 全选

lonelycorn@untbook:~$ cat abc
lkjlksdf lkjsdlkfj   dfjlkjwelr
lkjsd jklerjncvlkj this sucks!!
sldkjflkwe  sdjlkj
sdfljk xlkcjlsf
lskdjfl saldkfjl  adfl
lonelycorn@untbook:~$ cat xxx
#!/bin/bash
declare -a arr
exec 10<&0
exec < abc
n=0
while read arr[$n]
do
	let n+=1
done
unset arr[$n]
exec 0<&10 10<&-
echo ${#arr[*]}
for (( i=0; i<${#arr[@]}; i++ ));do echo ${arr[${i}]}; done
lonelycorn@untbook:~$ ./xxx
5
lkjlksdf lkjsdlkfj dfjlkjwelr
lkjsd jklerjncvlkj this sucks!!
sldkjflkwe sdjlkj
sdfljk xlkcjlsf
lskdjfl saldkfjl adfl
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#21

帖子 xiooli » 2008-08-19 11:41

我以前也想过这么干,嫌麻烦没弄,看来只有这样子了现在。
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#22

帖子 lonelycorn » 2008-08-19 21:53

这也就3行搞定的。其他都是废话。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#23

帖子 lonelycorn » 2008-08-19 21:57

这也就3行搞定的。其他10+行都是废话。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 能滚动文字的脚本哦^^

#24

帖子 O_O_BOT » 2009-08-09 22:21

IFS="
"
就可以分割了
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
头像
hjhee
帖子: 418
注册时间: 2008-03-08 8:07

Re: 能滚动文字的脚本哦^^

#25

帖子 hjhee » 2009-08-10 7:22

读小说不用翻页了 :em04

长的句子后面显示不出来 希望能转行显示
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 能滚动文字的脚本哦^^

#26

帖子 O_O_BOT » 2009-08-10 9:17

fold -w
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 能滚动文字的脚本哦^^

#27

帖子 eexpress » 2009-08-10 9:42

折腾前,先汇报下嘛。 :em04
● 鸣学
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

Re:

#28

帖子 yaska » 2009-08-10 9:46

代码: 全选

$ cat file |while read line; do echo "${line}";done
不明白。说详细一点。或者举个例子。
我逗无 了奈了……
HP的本跑 ubuntu还得把我折腾死。
显卡、无线/ 有线网卡、声卡、键盘……
成功复活~
这样行不?
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 能滚动文字的脚本哦^^

#29

帖子 O_O_BOT » 2009-08-10 10:11

代码: 全选

#!/bin/bash
[ -z $1 ] && echo "No input file!" && exit 1
screen_line=${2:-10}
line_width=${3:-80}
(( hlt_line = screen_line / 2 ))

mk_lines() {
    OIFS=$IFS
    echo $OIFS
    IFS="
"
    lines=($(cat $1 | fold -w $line_width))
    IFS=$OIFS
    line_cnt=${#lines[@]}
}

init() {
    tty=$(stty -g)
    echo -e "\033[?25l"
}

restore() {
    echo -e "\033[?25h"
    stty $tty
    clear
}

show() {
    local num index
    clear
    for ((num=0; num<screen_line; num++)); do
        (( index = $1 - hlt_line + num))
        if (( index < 0 )) || (( index >= line_cnt)); then
            continue
        fi
        echo -ne "\033[$((num+3));10H"
        if (( num == hlt_line )); then
            echo -ne "\033[;32m${lines[$index]}\033[0m"
        else
            echo -ne "${lines[$index]}"
        fi
    done
}

##########################################################
mk_lines $1
init
for ((i=0; i<line_cnt; i++)); do
    show $i
    sleep 1
done
restore
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 能滚动文字的脚本哦^^

#30

帖子 tusooa » 2009-08-25 13:03

试试以\n为分隔符?

代码: 全选

] ls -ld //
回复