gpt4 book ai didi

linux - 检测shell脚本的输出流类型

转载 作者:IT王子 更新时间:2023-10-29 00:25:20 24 4
gpt4 key购买 nike

我正在编写一个在命令行上使用 ANSI 颜色字符的 shell 脚本。

例子:example.sh

#!/bin/tcsh
printf "\033[31m Success Color is awesome!\033[0m"

我的问题是:

$ ./example.sh > out

$./example.sh | grep 

ASCII 代码将与文本一起原始发送,弄乱输出并且通常会造成困惑。

我很想知道是否有办法检测到这一点,以便我可以针对这种特殊情况禁用颜色。

我已经在 tcsh 手册页和网络上搜索了一段时间,但还没有找到任何特定于 shell 的内容。

我不受 tcsh 的约束,这是我们的团体标准...但谁在乎呢?

是否可以在 shell 脚本中检测到您的输出是否被重定向或管道传输?

最佳答案

查看此 previous SO question ,其中涵盖了 bash。 Tcsh 提供与 filetest -t 1 相同的功能来查看标准输出是否为终端。如果是,则打印颜色内容,否则将其保留。这是 tcsh:

#!/bin/tcsh
if ( -t 1 ) then
printf "\033[31m Success Color is awesome!\033[0m"
else
printf "Plain Text is awesome!"
endif

关于linux - 检测shell脚本的输出流类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com