正在测试外部功能。总的来说,它们似乎按预期工作,除了这一个。
我在外部脚本(mylib)中设置颜色
这似乎工作正常:
#!/bin/bash
. mylib
red
echo " red text "
. mylib
white
echo " white text "
这不是,不知道应该怎么做。我想在同一条线上改变颜色。 (没有所有的转义编码)
#!/bin/bash
. mylib
red
echo "Red text " . mylib white " white text"
我尝试了一些括号和' $'想法,但都失败了。
由于 戴夫
答案 0 :(得分:1)
你可以这样做,但效率低得离谱。
echo "Red text $(source mylib; white) white text"
只有稍微才能更好地获取库一次:
source mylib # This only needs to be done ONCE!
echo "Red text $(white) white text"
考虑一下:每次你想要改变颜色,你要求shell执行此操作:
fork()
以创建子贝壳mylib
并执行每一行(在前一种情况下)white
white
函数)。 [因为子shell正在退出,这意味着它读取和解析mylib
的工作被丢弃了,下次需要更改颜色时,mylib
将需要重新读取并从头开始重新分析] waitpid()
从流程表中获取它。echo
命令。如果运行source mylib
设置一个名为white
的变量,并且只提取一次mylib
,之后又包含了通过引用变量:
source mylib # this only needs to be done ONCE!
echo "Red text ${white} white text"
在这种情况下,不需要任何子壳,更不用说换色了。
您可能还希望查看BashFAQ #37,讨论处理颜色的最佳做法。