我正在尝试制作随机颜色输出字符串
我的文件名是abc,我输入的命令是abc RANDOM love_bash
color=(0;30 0;31 0;32 0;33 0;34 0;35 0;36 0;37)
color2=${#color[*]}
input='^random$'
shopt -s nocasematch
if [[ $1 =~ $input ]]; then
echo -ne '\e['${color[$((RANDOM%color2))]}m
exit 2
fi
当我输入命令以获得随机输出时我得到
./echoc: line 22: syntax error near unexpected token `;'
./echoc: line 22: `color=(0;30 0;31 0;32 0;33 0;34 0;35 0;36 0;37)'
./echoc: line 42: RANDOM%color2: division by 0 (error token is "color2")
答案 0 :(得分:2)
;
是bash
中的命令终止符;你需要引用它作为数组元素的一部分。
color=("0;30" "0;31" ... )
答案 1 :(得分:1)
我会做什么呢?
tput setaf $(( ( RANDOM % 7 ) + 1 ))
echo foobar
tput sgr0
答案 2 :(得分:0)
我用''进行了测试。围绕ANSI颜色代码,它的工作原理:
color=('0;30' '0;31' '0;32' '0;33' '0;34' '0;35' '0;36' '0;37' '1;30' '1;31' '1;32' '1;33' '1;34' '1;35' '1;36' '1;37')
color2=${#color[*]}
input='^random$'
shopt -s nocasematch
if [[ $1 =~ $input ]]; then
echo -ne '\e['${color[RANDOM%color2]}m
exit 2
fi