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
相關文章
相關標籤/搜索