分页: 2 / 3

发表于 : 2008-08-18 22:51
HuntXu
空格先转义? :evil:

发表于 : 2008-08-18 22:57
xiooli
HuntXu 写了:空格先转义? :evil:
仍然不行滴 :lol:

发表于 : 2008-08-18 23:04
lonelycorn
没找到呢。我自己编了一个但是效果相当不好。变成隔一行读一个了。我自己也搞不明白了。

代码: 全选

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



发表于 : 2008-08-18 23:20
lonelycorn
基本完成了。就是还有个空行。

代码: 全选

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


发表于 : 2008-08-18 23:29
lonelycorn
完成了。原来最后一个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

发表于 : 2008-08-19 11:41
xiooli
我以前也想过这么干,嫌麻烦没弄,看来只有这样子了现在。

发表于 : 2008-08-19 21:53
lonelycorn
这也就3行搞定的。其他都是废话。

发表于 : 2008-08-19 21:57
lonelycorn
这也就3行搞定的。其他10+行都是废话。

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

发表于 : 2009-08-09 22:21
O_O_BOT
IFS="
"
就可以分割了

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

发表于 : 2009-08-10 7:22
hjhee
读小说不用翻页了 :em04

长的句子后面显示不出来 希望能转行显示

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

发表于 : 2009-08-10 9:17
O_O_BOT
fold -w

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

发表于 : 2009-08-10 9:42
eexpress
折腾前,先汇报下嘛。 :em04

Re:

发表于 : 2009-08-10 9:46
yaska

代码: 全选

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

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

发表于 : 2009-08-10 10:11
O_O_BOT

代码: 全选

#!/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

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

发表于 : 2009-08-25 13:03
tusooa
试试以\n为分隔符?