linux下命令执行结果做为其余命令输入参数

1. 经过ps命令获取对应程序的pid

好比这里要获取redis-server这个进程的pidredis

[plain] view plain copyshell

  1. # ps -ef | grep redis-server  
  2. root      60415      1 93 Feb17 ?        8-04:12:36 redis-server *:6379  
  3. root      61823  59236  0 01:26 pts/1    00:00:00 grep --color=auto redis-server  

可是咱们要获取具体的60415这个值,能够经过下面命令来获取命令工具

[plain] view plain copyspa

  1. ps -ef | grep redis-server | grep -v grep | awk '{print $2}'   

简单介绍awk,就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各类分析处理。.net

2.把获取的pid做为其余命令的输入

这里执行一个名字为test的C程序,须要把pid做为输入参数。命令行

方法1:

[plain] view plain copyserver

  1. ./test `ps -ef | grep redis-server | grep -v grep | awk '{print $2}'`  

符号:` `
名称:反引号,上分隔符
位置:反引号(`)这个字符通常在键盘的左上角,数字1的左边,不要将其同单引号(’)混淆
做用:反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分blog

方法2:

[plain] view plain copy进程

  1. ps -ef | grep redis-server | grep -v grep | awk '{print $2}'  | xargs ./test  

命令:xargs字符串

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。一般状况下,xargs从管道或者stdin中读取数据,可是它也可以从文件的输出中读取数据。xargs的默认命令是echo,这意味着经过管道传递给xargs的输入将会包含换行和空白,不过经过xargs的处理,换行和空白将被空格取代。

 

3.增长条件判断:

find .  -type f |grep 111.c |while read line;do test -i $line;done