使用 eval 在变量中执行命令

4m1*_*4j1 1 bash variable

我正在尝试使用 grep 为某些日志文件着色。我写了一个脚本,它的一部分看起来像这样:

#!/bin/bash
com="GREP_COLOR=\"1;36\" egrep --color=always  '[^a-zA-Z0-9]' $log |less -R"
log="/var/log/syslog"
eval $com
Run Code Online (Sandbox Code Playgroud)

执行丢失 $log !

我试过这个:

#!/bin/bash
com="`GREP_COLOR=\"1;36\" egrep --color=always  '[^a-zA-Z0-9]' $log |less -R`"
log="/var/log/syslog"
eval $com
Run Code Online (Sandbox Code Playgroud)

什么都没有发生 !

你能看出我的代码有什么错误吗?

ДМИ*_*КОВ 5

不要使用eval.

在这里,它完全可以避免:

function color_log() {
  log=$1
  GREP_COLOR="1;36" egrep --color=always '[^a-zA-Z0-9]' $log | less -R
}

color_log "/var/log/syslog"
Run Code Online (Sandbox Code Playgroud)