Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在Vagrant provision脚本中以自定义颜色输出错误?_Bash_Shell_Vagrant_Vagrant Provision - Fatal编程技术网

Bash 如何在Vagrant provision脚本中以自定义颜色输出错误?

Bash 如何在Vagrant provision脚本中以自定义颜色输出错误?,bash,shell,vagrant,vagrant-provision,Bash,Shell,Vagrant,Vagrant Provision,我想让我的Vagrant provision脚本运行一些检查,如果用户不满意,这些检查将需要用户操作。简单到: if [ ! -f /some/required/file ]; then echo "[Error] Please do required stuff before provisioning" exit fi 但是,只要这不是一个真正的错误,我就得到了以绿色打印的echo。我希望我的输出是红色(或者,至少是不同的颜色),以提醒用户 我试过: echo "\033[3

我想让我的Vagrant provision脚本运行一些检查,如果用户不满意,这些检查将需要用户操作。简单到:

if [ ! -f /some/required/file ]; then
    echo "[Error] Please do required stuff before provisioning"
    exit
fi
但是,只要这不是一个真正的错误,我就得到了以绿色打印的
echo
。我希望我的输出是红色(或者,至少是不同的颜色),以提醒用户

我试过:

echo "\033[31m[Error] Blah blah blah"
这在本地工作,但在流浪输出上,颜色代码被转义,我得到了绿色的回声


这可能吗?

默认情况下,Vagrant命令使用
--无颜色选项运行。您可以尝试使用
--color
设置颜色。Vagrant的环境变量已记录在案。

默认情况下,Vagrant命令使用
--无颜色
选项运行。您可以尝试使用
--color
设置颜色。Vagrant的环境变量已记录在案。

之所以会发生这种情况,是因为一些工具将其部分消息写入了stderr
,然后Vagrant将其解释为错误并以红色打印

并不是所有的终端都支持ANSI颜色代码,Vagrant不会注意这一点。尽管如此,我不会建议通过将单词发送到stderr对其进行着色,除非它是一个错误

要实现这一目标,您只需:

echo "Your error message" > /dev/stderr

发生这种情况是因为一些工具将一些消息写入
stderr
,然后Vagrant将其解释为错误并以红色打印

并不是所有的终端都支持ANSI颜色代码,Vagrant不会注意这一点。尽管如此,我不会建议通过将单词发送到stderr对其进行着色,除非它是一个错误

要实现这一目标,您只需:

echo "Your error message" > /dev/stderr

您需要使用keep_color true,然后它才能按预期工作

config.vm.provision "shell", keep_color: true, inline: $echoes
$echoes = <<-ECHOES
echo "\e[32mPROVISIONING DONE\e[0m"
ECHOES
config.vm.provision“shell”,保留颜色:true,内联:$echomes

$echoos=您需要使用keep_color true,然后它才能按预期工作

config.vm.provision "shell", keep_color: true, inline: $echoes
$echoes = <<-ECHOES
echo "\e[32mPROVISIONING DONE\e[0m"
ECHOES
config.vm.provision“shell”,保留颜色:true,内联:$echomes
美元回声=