我通过使用以下 bash 函数对背景颜色进行着色来显示 tput 的 256 种颜色。
tput-bgcolours ()
{
for color in {0..255}; do
bg=$(tput setab $color)
echo -n $bg" "
done
echo $(tput sgr0)
}
如何将一系列值传递给函数而不是查看 0 到 255 之间的所有颜色?
答案1
你可以做:
tput-bgcolours()
{
for color in "$@"; do
tput setab $color
printf " "
done
tput sgr0
}
tput-bgcolours {0..10} {30..40}
这"$@"
是函数的参数集。现在,函数的调用者可以传递他们有兴趣打印的值。
这还有你没有的好处有使用范围:
tput-bgcolours 1 7 15 8 1
答案2
有几个替代方案:
printf
是一般来说优先于echo
.- 一个不需要
echo tput
兼容sh
tput-bgcolours() {
for color in $(seq "$1" "$2"); do
tput setab "$color"
printf ' '
done
tput sgr0
}
bash 循环
tput-bgcolours() {
for (( c = $1; c <= $2; ++c )); do
tput setab "$c"
printf ' '
done
tput sgr0
}
用法:
tput-bgcolours FROM TO
IE
tput-bgcolours 0 16
当然,您也可以在 ( ) 等函数中添加测试test if length of arg is empty
:
if [ -z "$1" ] || [ -z "$2" ]; then
return 1
fi
或使用默认值:
from=${1:-0}
to=${2:-255}