我编写了一个基本脚本,其中有彩色线条。
#!/bin/bash
g="\e[32m"
_0="\e[0m"
printf "$g name $_0"
该脚本正常运行,但在shellcheck.net我收到这条消息:Don't use variables in the printf format string
。
当我将脚本转换为#!/bin/sh
脚本时,另一个问题无法正确运行,给出以下输出:
\e[32m name \e[0m
我用过echo -e
,但这次sh
说不-e
支持。如何编写一行通用代码来解决这个问题?谢谢。
答案1
你可以使用它,在 bash 或 sh 上都可以工作:
#!/bin/bash
# \e not supported by POSIX; use \033 (octal) instead.
g=$(printf '\033[32m')
_0=$(printf '\033[0m')
printf '%s name %s foo' "$g" "$_0"