如何使存储在变量中的bash颜色代码可用于外部脚本

时间:2016-08-05 01:39:45

标签: bash macos shell colors

我似乎无法找到解决此特定问题的方法,我在外部文件中使用存储为变量的bash颜色代码:

  1. 我有一个文件,其中包含一系列颜色代码,这些代码存储为我希望其他脚本可用的变量,以便我可以在所有脚本中使用变量名而不是颜色代码。
  2. colorCodeFile.sh

    green='\033[1;32m'
    red='\033[31m'
    yellow='\033[1;33m'
    endColor='\033[0m'
    
    1. 我在所有其他脚本文件的开头使用source来使颜色变量可用。这很好用,我得到彩色输出。
    2. aScriptUsingColorCodes.sh

      source ~/colorCodeFile.sh
      echo "this is ${red}red${endColor}"
      
      1. 由于某种原因,捕获的是外部脚本(aScriptUsingColorCodes.sh),它会调用"源必须在我的.bashrc文件中有一个别名。如果我使脚本可执行并将其放入我的路径并删除别名,则颜色变量将不再可用。
      2. 如果我在.bashrc文件中使用别名来运行脚本,但我不明白为什么颜色变量可用但是如果我使脚本可执行并且只是从命令行运行它而不是别名。

        为了清楚起见,可执行脚本在我的路径中并且它们确实运行。 colorCodeFile.sh文件包含带有字符串和函数的变量,当我使用source从外部脚本调用它们时,这两个变量都可用并且工作正常。但是对于颜色代码变量,我最终得到了颜色代码文本(' \ 033 [31m']而不是彩色输出。

        如果重要的话我就在MAC上。

1 个答案:

答案 0 :(得分:0)

像这样更新colorCodeFile.sh

$ cat colorCodeFile.sh
green=$(echo -e '\033[1;32m')
red=$(echo -e '\033[31m')
yellow=$(echo -e '\033[1;33m')
endColor=$(echo -e '\033[0m')

或将aScriptUsingColorCodes.sh更新为:

echo -e "this is ${red}red${endColor}"