This question already has answers here:
Closed 20 days ago.
Removing colors from output
(11个答案)
GREEN='\033[0;32m'
NC='\033[0m' # No Color

rimip2=$(echo -e "${GREEN}222b:b33c:3401:2341:88c2:85d7:5cf6:6a01${NC}" | grep "222b:b33c:3401:2341:88c2:85d7:5cf6:6a01")

 if [[ "${rimip2}" == "222b:b33c:3401:2341:88c2:85d7:5cf6:6a01" ]]; then
     echo "#### Same"
 else
   echo "#### Different"
 fi

尽管echo${rimip2}的可见显示值为222b:b33c:3401:2341:88c2:85d7:5cf6:6a01,但此代码始终打印“不同”
如果删除${GREEN}和${NC},则显示“相同”。
这是复杂代码的简化部分。
所以我的目标是保持打印为绿色,然后重新映射我将用于ssh的行。但现在我不能将它用于SSH,直到它等于字符串值“222b:b33c:3401:2341:88c2:85d7:5cf6:6a01”
如何在重新映射行后删除绿色编码部分?

最佳答案

您可以使用grep -o只打印与表达式匹配的部分,这样任何颜色代码的存在都不再产生影响:

rimip2=$(echo -e "${GREEN}222b:b33c:3401:2341:88c2:85d7:5cf6:6a01${NC}" | grep -o "222b:b33c:3401:2341:88c2:85d7:5cf6:6a01")

您也可以直接使用来自CC >的退出状态,至少在这个简化的情况下:
 if echo -e "${GREEN}222b:b33c:3401:2341:88c2:85d7:5cf6:6a01${NC}" | grep "222b:b33c:3401:2341:88c2:85d7:5cf6:6a01" >/dev/null; then
     echo "#### Same"
 else
   echo "#### Different"
 fi

09-25 20:57