一个百分比不透明度转16进制的 Shell 脚本

548 阅读2分钟

水~

掘金第一篇来个脚本吧~

这个脚本主要功能是将百分比转成16进制。

原因:我司设计大佬提交到 lanhu 的设计稿是以百分比不透明度控制的颜色,而 Android 里面用的是16进制 ARGB。所以就有了这个脚本~

创建一个.sh文件

例如:tran_calc.sh。然后复制粘贴下面的内容:

#!/bin/bash

# 计算0%~100%
tran_table(){
    tran=0
    while((tran <= 100))
    do
        tran_to_hex $tran;let "tran++"
    done

}

# 计算并格式化输出hex
tran_to_hex(){
    # 例如:tran_to_hex FF 这里 $1 指的是 FF 。也对应了下文的【参数2】
    tran=$1
    temp=$((255*$tran/100))
    #计算hex值,并补充前导0
    hexStr=$(echo "obase=16;$temp"|bc|awk '{ len = (2 - length % 2) % 2; printf "%.*s%s\n", len, "00000000", $0}')
    # 格式化输出
    printf "透明度 %3s    百分比 %3s%%     Hex %s    \n" $temp $tran $hexStr

}

# 参数大于两个的时候 执行 then 内代码
if test $# -ge 2
then
    #第一个参数为hex的时候执行 then 内代码
    if test $1 = "hex"
    then
        #调用 函数,并传入【参数2】
        tran_to_hex $2
    else
        tran_table
    fi
else
    # 参数不足两个,输出对照表
    tran_table
fi

添加可执行权限

chmod a+x tran_calc.sh

创建软链接

终端执行下面指令

ln -s `pwd`/tran_calc.sh /usr/local/bin/tran_calc

使用

现在你就可以在终端执行

  • 输出0%~100%的透明度对照表
tran_calc

或者

  • 转换数值到16进制
tran_calc hex [数值]

例如 tran_calc hex 50 即表示计算50%透明度的hex值

扩展知识

Shell 传递参数。看下面这个对照表,来自菜鸟教程-——传递参数章节

写法含义
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。 如""用「"」括起来的情况、以"*"用「"」括起来的情况、以"1 22 … n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@相同,但是使用时加引号,并在引号中返回每个参数。如"*相同,但是使用时加引号,并在引号中返回每个参数。 如"@"用「"」括起来的情况、以"1""1" "2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

本来还想看看有没有机会参加下8月更文活动来着。字数少不能参加、有大段代码不能参加、有大量引用的也不能参加。哈哈哈。我都占了。算了算了~

将就看。欢迎指正~~