日々精進

新しく学んだことを書き留めていきます

通常のgrepの逆である文字列を含まない行を探す

chefでssh-agentプロセスがあったらssh-agentの起動スクリプトをスキップする時に使った。
grepに-vオプションを付けると、ある文字列を含む行を除外できる。

execute "launch ssh-agent" do
  user "root"
  action :run
  command <<-EOC
    eval `ssh-agent`
    ./ssh-add-key-to-agent.exp
  EOC
  # grep自身のプロセスがヒットしてしまうので、grep -v "grep ssh-agent"でgrep自身のプロセスを除外する
  not_if 'ps aux | grep ssh-agent | grep root | grep -v "grep ssh-agent"'
end

参考:Grepの逆 (マッチするモノを除外)でマッチしないものを探す - それマグで!