linux下命令执行结果作为其他命令输入参数

原创 2016年06月01日 10:56:53

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

比如这里要获取redis-server这个进程的pid

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


但是我们要获取具体的60415这个值,可以通过下面命令来获取命令

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

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



2.把获取的pid作为其他命令的输入

这里执行一个名字为test的C程序,需要把pid作为输入参数。

方法1:

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

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


方法2:

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


命令:xargs

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






参考1:http://my.oschina.net/leopardsaga/blog/112335

参考2:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

相关文章推荐

shell 脚本中获取命令的输出

shell脚本中获取命令执行返回值需要注意的地方

linux中如何以一个命令的输出作为另外一个命令的输入---用``

在linux中, 我们经常用到xargs命令, 这个命令很重要, 它可以以一个命令的输出作为另外一个命令的输入, 其实, 用``也能实现类似功能。 请注意这个符号, 它不是引号, 而是倒引号, 它在电...
  • stpeace
  • stpeace
  • 2016年07月14日 23:49
  • 2063

将Linux命令的结果作为下一个命令的参数

1. 符号:` ` 名称:反引号,上分隔符 位置:反引号(`)这个字符一般在键盘的左上角,数字1的左边,不要将其同单引号(’)混淆 作用:反引号括起来的字符串被shell解释为命令行,在执行时,...
  • permike
  • permike
  • 2016年07月19日 16:27
  • 4808

Linux Shell 之 Shell 打印命令

1、echo 命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式:echo arg 您可以使用echo实现更复杂的输出格式控制。 显示转义字符 "echo "\"It...

Bash shell脚本打印出正在执行的命令

默认情况下,bash脚本不会打印执行的每个命令,这个有时候不太方面。 如下的方法可以让bash脚本打印出执行的命令: 1) 在脚本里添加  set -v 或者 #!/bin/bash -v 以加...

Linux 文件内容大小写转换

Linux 文件内容大小写转换   如果是单个文件,用cat file | tr a-z A-Z > newfile 可以将文件内容转换为大写。cat file | tr A-Z  a-z > ...

Linux命令行下终止当前程序的快捷键

我的LINUX默认的启动模式是文本模式, 今天我在命令行模式下做着C++参考书上的一个习题, 一不小心写了个死程序, 一直在里面递归跳不出来, 任何的输入都不行,急得我呀…… 在试了众多以前...
  • mzlogin
  • mzlogin
  • 2008年10月12日 04:43
  • 12555

Linux:使用awk命令获取文本的某一行,某一列

1、打印文件的第一列(域) : awk '{print $1}' filename 2、打印文件的前两列(域) : awk '{print $1,$2}' filename 3、打印完第一列,然后打印...

Shell脚本学习-命令行参数处理

命令行参数处理 转自http://blog.chinaunix.net/uid-21505614-id-2173248.html 必须要要知道几个变量,     *    $0 :即命令本身,相当...

如何将linux 命令的执行结果在屏幕输出的同时保存到文件

1.直接覆盖日志文件     #  ls     -l     |   tee   ./t.log     #  make | tee make.log2.将输出内容附加到日志文件     # ls ...
  • leeiee
  • leeiee
  • 2010年05月06日 21:11
  • 11632
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下命令执行结果作为其他命令输入参数
举报原因:
原因补充:

(最多只允许输入30个字)