#!/bin/sh
# rgbtohex.sh
f="$1,"
focus=0
start=0
until [ "$limit" == "3" ]
do
focus=$((focus+1))
if [ "${f:$focus:1}" == "," ]
then
limit=$((limit+1))
length=$(($focus-$start))
let c$limit="${f:start:length}"
start=$((focus+1))
fi
done
r=`echo "obase=16; $c1" | bc`
r2=`echo "obase=16; $c2" | bc`
r3=`echo "obase=16; $c3" | bc`
if [ "${r:1:2}" == "" ]
then r=0$r
fi
if [ "${r2:1:2}" == "" ]
then r2=0$r2
fi
if [ "${r3:1:2}" == "" ]
then r3=0$r3
fi
echo $r$r2$r3
5条答案
按热度按时间qcuzuvrc1#
如果您不愿意使用bash进行子字符串扩展,我仍然会使用printf进行转换。
nimxete22#
您可以使用如下脚本:
像这样使用它:
从而产生如下输出:
可以通过测试参数等方法来改进它,但它做的是您想要做的。
brvekthn3#
如果您需要此脚本的POSIX兼容版本,以处理更多有效的CSS十六进制颜色格式(即:4部分,带有alpha通道
#AABBCCDD
,3个字符快捷键#FFF
),这应该可以:qco9c6ql4#
s71maibg5#
我知道这个问题已经很老了,但我想补充一个轶事。
或者,如果你想把rgb转换成hex,你可以做一些类似的事情: