我在这做错了什么?在bash随机

时间:2014-11-13 19:21:45

标签: bash

我正在尝试制作随机颜色输出字符串 我的文件名是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")

3 个答案:

答案 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