awk - bash command quoted by single quote -


i need find process string matching, , kill it, need in 1 line in script file: here's tried:

 'kill $(ps -ef|grep xxx|grep -v grep | awk '{print $2 }' )' 
 "kill $(ps -ef|grep xxx|grep -v grep | awk '{print $2 }' )" 

first 1 didn't work because of nested single quote, second 1 didn't work because $2 taken parent script argument 2 parent script. how do this?

the easiest way accomplish task is:

pkill xxx 

(which you'll find in debian/ubuntu world in package procps, if don't have installed.) might need use pkill -f xxx, depending on whether xxx part of process name or argument, case script execution.

however, answer more general question shell-quoting, if need pass string

kill $(ps aux | grep xxx | grep -v grep | awk '{print $2}') 

as argument, need use backslash escapes:

bash -c "kill \$(ps aux | grep xxx | grep -v grep | awk '{print \$2}')" 

or, can paste several quoted strings:

bash -c 'kill $(ps aux | grep xxx | grep -v grep | awk '"'"'{print $2}'"'"')' 

personally, find first 1 more readable ymmv.

you can backslash escape few characters inside double-quoted string: $, ", \, newline , backtick; , inside single-quoted string backslash backslash. however, that's enough let type anything.


Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -