我正在尝试练习代码并将我的其他兴趣与其结合起来,我的强烈兴趣是一般的遗传学/科学。我正在制作一个简单的脚本来生成随机字符串,但如果我使用遗传密码(AGCT)的输入,输出cat
将根据字母着色(A - 蓝色,G - 绿色,C - 红色,T - 黄色的)。我对此摸不着头脑,我的谷歌搜索不太好。命令的输出(使用遗传密码输入)如下所示:
user@conroe$ random AGCT 128
TTCAGGATCAGGTGGCCGATGCCCGTCACGTAGTGGAGGTATTACGTTTTCATCAATCACACGTTACCCCACTTCCTAGCGACAACGTGTGACTCGATGAATAGGAGCAGCGTCCCGCTCGAGATGAC
这是代码:
RED='\033[0;31m'
NC='\033[0m'
if [ $# == 2 ]
then
{ cat /dev/urandom | env LC_CTYPE=C tr -dc $1 | head -c $2; echo; }
else
printf "${RED}error: ${NC}insufficient input\n"
fi
有什么帮助吗?
答案1
您可以通过管道输出< /dev/urandom tr -dc $1 | head -c $2
(我冒昧地删除了乌鲁木齐大学以及显然不需要的env LC_CTYPE=C
和echo
;但是,您可以在您的版本中将它们恢复为一次while
读取一个字符的循环,并回显不同的颜色转义序列,后跟基于读取字符的不同字符:
#!/bin/bash
if [ $# == 2 ]
then
< /dev/urandom tr -dc $1 | head -c $2 | while read -n 1 x
do
case $x in
A)
echo -ne '\033[0;34mA'
;;
G)
echo -ne '\033[0;32mG'
;;
C)
echo -ne '\033[0;31mC'
;;
T)
echo -ne '\033[0;33mT'
;;
esac
done
echo -e '\033[0m'
exit 0
fi
exit 1