История изменений
Исправление vodz, (текущая версия) :
fortune | cowsay > /tmp/cowsay ;
Так лучше не делать, получится мешанина при двух вызовах.
TMP=`mktemp`
fortune | cowsay > $TMP
Взгруснулось. Вот вам на bash:
#!/bin/bash
show_n() {
local i v
echo -n "$1"
for ((i=$2;i<$3;i++)); do
v=$4[$i]
echo "${!v}"
done
}
n=0
while IFS='
' read -r l; do
lines[n++]=$l
done < <(fortune | cowsay)
first=$(($n-20))
show_n "$(tput setaf 1)" 0 $first lines
show_n "$(tput setaf 2)" $first $n lines
echo -n "$(tput setaf 0)"
Для сравнения, на ash:
#!/bin/ash
show_pseudo_array() {
local i
echo -n "$1"
i=$2
while [ $i -lt $3 ]; do
i=$(($i+1))
eval echo \"\$$4$i\"
done
}
n=0
fortune | cowsay {
while IFS='
' read l; do
n=$(($n+1))
eval l$n=\$l
done
first=$(($n-20))
show_pseudo_array "$(tput setaf 1)" 0 $first l
show_pseudo_array "$(tput setaf 2)" $first $n l
echo -n "$(tput setaf 0)"
}
Исправление vodz, :
fortune | cowsay > /tmp/cowsay
Так лучше не делать, получится мешанина при двух вызовах.
TMP=`mktemp`
fortune | cowsay > $TMP
Взгруснулось. Вот вам на bash:
#!/bin/bash
show_n() {
local i v
echo -n "$1"
for ((i=$2;i<$3;i++)); do
v=$4[$i]
echo "${!v}"
done
}
n=0
while IFS='
' read -r l; do
lines[n++]=$l
done < <(fortune | cowsay)
first=$(($n-20))
show_n "$(tput setaf 1)" 0 $first lines
show_n "$(tput setaf 2)" $first $n lines
echo -n "$(tput setaf 0)"
Для сравнения, на ash:
#!/bin/ash
show_pseudo_array() {
local i
echo -n "$1"
i=$2
while [ $i -lt $3 ]; do
i=$(($i+1))
eval echo \"\$$4$i\"
done
}
n=0
fortune | cowsay {
while IFS='
' read l; do
n=$(($n+1))
eval l$n=\$l
done
first=$(($n-20))
show_pseudo_array "$(tput setaf 1)" 0 $first l
show_pseudo_array "$(tput setaf 2)" $first $n l
echo -n "$(tput setaf 0)"
}
Исходная версия vodz, :
[qoute]
fortune | cowsay > /tmp/cowsay
TMP=`mktemp`
fortune | cowsay > $TMP
Взгруснулось. Вот вам на bash:
#!/bin/bash
show_n() {
local i v
echo -n "$1"
for ((i=$2;i<$3;i++)); do
v=$4[$i]
echo "${!v}"
done
}
n=0
while IFS='
' read -r l; do
lines[n++]=$l
done < <(fortune | cowsay)
first=$(($n-20))
show_n "$(tput setaf 1)" 0 $first lines
show_n "$(tput setaf 2)" $first $n lines
echo -n "$(tput setaf 0)"
Для сравнения, на ash:
#!/bin/ash
show_pseudo_array() {
local i
echo -n "$1"
i=$2
while [ $i -lt $3 ]; do
i=$(($i+1))
eval echo \"\$$4$i\"
done
}
n=0
fortune | cowsay {
while IFS='
' read l; do
n=$(($n+1))
eval l$n=\$l
done
first=$(($n-20))
show_pseudo_array "$(tput setaf 1)" 0 $first l
show_pseudo_array "$(tput setaf 2)" $first $n l
echo -n "$(tput setaf 0)"
}