写了个shell小脚本用来把%为单位的alpha值和RGB值转换为16进制数。
输入有三种情况:
#! /bin/bash toHex(){ v=`echo "obase=16;${1}" | bc` l=`echo ${#v}` if [ $l -lt 2 ] then v="0${v}" fi echo $v } toAlpha(){ echo "obase=16;$(($1*256/100))" | bc } toColorHex(){ v1=`toHex $1` v2=`toHex $2` v3=`toHex $3` echo "${v1}${v2}${v3}" } if [ $# -eq 3 ] then color=`toColorHex $1 $2 $3` echo "#$color" elif [ $# -eq 4 ] then alpha=`toAlpha $1` color=`toColorHex $2 $3 $4` echo "#${alpha}${color}" elif [ $# -eq 1 ] then echo `toAlpha $1` else echo "You should input four or three numbers" fi
### 参数获取 从脚本或者函数内部都可以通过 1、2、3… 变量名获取传入的参数。${1}即为传入的第一个参数。而${#}获取参数个数。
| 符号 | 含义 | |—–|—– | | -eq | equal | | -ne | not equal | | -lt | less than | | -gt | great than| | -ge | great than or equal | | -le | less than or equal |
如果需要将命令执行的结果赋值给变量,则需要将这条命令语句用``扩起,或者使用$(),不过$()在某些系统环境下可能无法使用。
数学计算语句需要用$(())括起。
bc是一种科学语句,也是shell种一个命令,不过大多数的使用场景是用来做数值转换。这里就是转为16进制。
shell 中的if 后面的[ 是一个可执行程序,所以需要在其后加空格,] 同理。
使用${#string}