evalを使用して変数からコマンドを実行する

evalを使用して変数からコマンドを実行する

grepを使用していくつかのログファイルに色を付けようとしています。私は次のスクリプトを書いた。

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

実行中に$ logがありません!

私はこれを試しました:

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

何もしません!

私のコードにどのような問題があるのか​​わかりますか?

ベストアンサー1

使用しないでください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"

おすすめ記事