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

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

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

linux在shell中执行命令并将结果赋值给变量

data=`df` 用反引号就可以了 $var $var={`df -lh | grep Filesystem`} 经过验证如下: date=$(command)...
  • u013176681
  • u013176681
  • 2016年05月27日 10:06
  • 25229

linux shell 执行多个命令的方法

(1)在每个命令之间用;(分号)隔开。   (2)在每个命令之间用&&隔开。 &&表示:若前一个命令执行成功,才会执行下一个。这样,可确保所有的命令执行完毕后,其执行过程都是成功的 这种执行方...
  • ysdaniel
  • ysdaniel
  • 2011年01月10日 21:36
  • 59080

Linux中执行shell脚本的4种方法

前提条件:shell脚本hello.sh,位置在/data/shell目录中并已有执行权限。 1)方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本 cd /data/...
  • zhangminemail
  • zhangminemail
  • 2017年04月13日 19:26
  • 724

Linux命令行,循环执行shell命令

Linux命令行,循环执行shell命令 死循环方式如下:命令格式为 while : ;do ; done; 可以将command替换为任意命令。...
  • daoshuti
  • daoshuti
  • 2017年06月01日 14:55
  • 4197

Linux执行shell脚本方式及区别&命令后台运行

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://4554480.blog.51cto.com/4544480/837006 ...
  • heqiyu34
  • heqiyu34
  • 2014年02月11日 22:16
  • 43775

linux shell命令的结果获取

var=`ps -ef | grep oracle` 或者 var=$(ps -ef | grep oracle)火 cmdif [ "$?" == "" ]then     echo "一个字符"e...
  • stonesharp
  • stonesharp
  • 2014年06月09日 20:36
  • 9134

shell 脚本中获取命令的输出

shell脚本中获取命令执行返回值需要注意的地方
  • haiqinma
  • haiqinma
  • 2016年12月15日 17:47
  • 13735

linux shell脚本读取用户输入的参数

$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1是传递给该shell脚本的第一个参数 $2是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 例如: #...
  • u010193457
  • u010193457
  • 2016年03月02日 13:37
  • 2880

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

在linux中, 我们经常用到xargs命令, 这个命令很重要, 它可以以一个命令的输出作为另外一个命令的输入, 其实, 用``也能实现类似功能。 请注意这个符号, 它不是引号, 而是倒引号, 它在电...
  • stpeace
  • stpeace
  • 2016年07月14日 23:49
  • 4467
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下命令执行结果作为其他命令输入参数
举报原因:
原因补充:

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