我有一个简单的代码设置,但无论出于什么原因它拒绝操作它应该如何
#!/bin/bash
RED='\033[0:31m'
RESET='\033[0m'
基本上这些都是一些简单的颜色编码
我接下来的事情是
for file in ./dir/*.c; do
echo "File [${RED}$file${RESET}] has been launched"
我的预期结果是
文件[myprogram.c]已启动(名称为红色)
相反,它只是拒绝编码颜色和转储
文件[\ 033 [0:31m]已经启动
知道我做错了吗?
答案 0 :(得分:3)
首先因为红色是week_number = "week1"
student_id = "1"
。你写的东西意味着别的东西,如下所示
然后,因为需要解释代码
这不起作用:
'\033[31m'
但这会:
$ red='\033[31m'
$ echo "${red}Hello"
或者,您可以将解释的值分配给变量:
$ red='\033[31m'
$ echo -e "${red}Hello"
然后不需要解释转义:
$ red="$(echo -e '\033[31m')"
$ red="$(printf '\033[31m')"
你所写的内容(除了使用分号应该是冒号)是设置前景的“粗体”,或者$ echo "${red}Hello"
表示瘦/亮,0
表示粗体/亮。
1
另外,$ printf '\033[31mHello\033[0;31mHello\033[1;31mHello'
用于前景3x
用于背景:
4x
可以打印一张完整的表格:
$ printf '\033[31;42mHello\033[0;44;31mHello\033[1;43;31mHello\033[0m'
答案 1 :(得分:1)
使用tput
#!/bin/bash
red=$(tput setaf 1)
reset=$(tput sgr0)
for file in ./dir/*.c; do
echo "File [${red}$file${reset}] has been launched"
done
with printf
#!/bin/bash
RED='\033[0;31m'
RESET='\033[0m'
for file in ./dir/*.c; do
printf "File [${RED}$file${RESET}] has been launched"
done