Linux bash 带颜色的 printf 格式分配给变量
Linux bash printf format with color assign to variable
我只想通过 printf 命令格式化一个字符串(包括着色)并将结果分配给一个变量。
不赋值给变量就没问题了,但是一旦我把结果赋值给变量并写入结果,格式就没了。
我的例子:
RED=$'3[0;31m'
NC=$'3[0m'
INPUT="AB${RED}CD${NC}EF"
printf -v OUTPUT '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST "
echo $OUTPUT
OUTPUT="$(printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST ")"
echo $OUTPUT
OUTPUT=$(printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST ")
echo $OUTPUT
printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST "
echo ""
我找到了几种将结果传递给变量 (-v VARIABLE) 的解决方案,但它会丢失格式。
感谢您的帮助和问候,
豪克
编辑 1:还有一个问题似乎是颜色代码。 printf 计数
AB${RED}CD${NC}EF 为 17 个字符,而不是 6 个。
使用这个 (echo "$VAR" in "") 来保持格式。不同的变量赋值方式没有区别:
printf -v OUTPUT '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST "
# or
OUTPUT=$(printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST ")
echo "$OUTPUT"
我只想通过 printf 命令格式化一个字符串(包括着色)并将结果分配给一个变量。
不赋值给变量就没问题了,但是一旦我把结果赋值给变量并写入结果,格式就没了。
我的例子:
RED=$'3[0;31m'
NC=$'3[0m'
INPUT="AB${RED}CD${NC}EF"
printf -v OUTPUT '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST "
echo $OUTPUT
OUTPUT="$(printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST ")"
echo $OUTPUT
OUTPUT=$(printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST ")
echo $OUTPUT
printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST "
echo ""
我找到了几种将结果传递给变量 (-v VARIABLE) 的解决方案,但它会丢失格式。
感谢您的帮助和问候,
豪克
编辑 1:还有一个问题似乎是颜色代码。 printf 计数 AB${RED}CD${NC}EF 为 17 个字符,而不是 6 个。
使用这个 (echo "$VAR" in "") 来保持格式。不同的变量赋值方式没有区别:
printf -v OUTPUT '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST "
# or
OUTPUT=$(printf '| %-20s | %-25s| %-10s' " $INPUT " " OTHER " " TEST ")
echo "$OUTPUT"