Chinaunix

标题: 【求助】如何引用上一个命令的输出结果 [打印本页]

作者: 童话天使    时间: 2011-07-20 09:51
标题: 【求助】如何引用上一个命令的输出结果
比如说在终端里rpm -q ncurses-devel
package ncurses-devel is not installed
我就是想用package这一行
然后写成脚本
#!/bin/env bash
rpm -q httpd >> amdi.txt
rpm -q ncurses-devel >> amdi.txt
grep '^package' amdi.txt
rm -f amdi.txt

运行脚本的显示结果是package ncurses-devel is not installed
希望你能理解我的意思

这个效果如何在脚本里更简单的实现,在终端里实现
希望高手能帮忙解答一下
如果不屑于解答也没问题,给个好用的 关键词 ,我可以自己在网上搜答案的
谢谢了

另外,希望大连的朋友能介绍个高新区附近能租的房子,3人住,能洗澡,每月平均一下每人不超过600就好,我现在在朋友的住处蹭着,不好意思,也比较偏远,下个馆子都得步行几十分钟……
作者: chenyx    时间: 2011-07-20 09:53
命令用``号括起来,结果就可以给变量了.`是1前面的那个键,不是单引号.
作者: jerryjzm    时间: 2011-07-20 11:03
lz,真的不知道哦,你到底需要什么
你说重点
作者: cst05001    时间: 2011-07-20 11:47
a=`date`
echo $a
作者: 童话天使    时间: 2011-07-20 11:48
回复 3# jerryjzm


    在下一个命令里引用上一个命令的输出结果

   我就是想写一个脚本,检测有什么需要的包没有装,假如就要检测3个包吧,里面写
#!/bin/bash
rpm  -q httpd
rpm -q mysqld
rpm -q php
假如说,httpd 的包没有装,就会显示 package……
但是这3个包都装过的话,就不会显示package……这一行
然后还是在这个脚本里用一个命令通过提取package这一行,就知道有哪些包没有装了

说的有些多啊  不知道你能不能看懂 呵呵
作者: 童话天使    时间: 2011-07-20 11:49
回复 4# cst05001


    希望能再详细点,谢谢了
作者: hover_sky    时间: 2011-07-20 12:37
lz,真的不知道哦,你到底需要什么
你说重点
jerryjzm 发表于 2011-07-20 11:03



    他需要租房
作者: jerryjzm    时间: 2011-07-20 12:49
我有点。。。。

[monitor@remote ~]$ rpm -q httpd mysqld php
package httpd is not installed
package mysqld is not installed
package php is not installed

这个是不是你要的意思
作者: 童话天使    时间: 2011-07-20 13:10
回复 8# jerryjzm


   
你先 yum install -y httpd
然后再仿照我最开始的脚本,运行结果会有2行package开头的行
作者: taojie2000    时间: 2011-07-20 13:14
回复 1# 童话天使


    这个效果如何在脚本里更简单的实现 ?         

    你是说想要比你写那个更好的脚本?
作者: 童话天使    时间: 2011-07-20 13:22
我那脚本根本就是垃圾脚本
好吧,关于终端的问题,我自己基本上已经解决了
rpm -q gnutls-devel httpd php | grep '^package'
如何写成更好的脚本,希望有人指点

额,房子的问题也很重要,虽然不该在这里提这类问题的
作者: 童话天使    时间: 2011-07-20 13:26
我那根本就是垃圾脚本
好吧,在终端下的命令方式我自己已经解决了
rpm -q gnutls-devel httpd php | grep '^package'

如何写成更好的脚本,希望有人指点

额,悄悄的说下,房子的问题也是次要的重点,路过的大连朋友要帮忙啊
作者: 童话天使    时间: 2011-07-20 13:36
回复 10# taojie2000


     
     其实我那脚本太垃圾,放在这里丢人,但想知道答案,也只能贴出来了
     关于在终端下引用上个命令,自己倒也有办法,感觉不完善,比如
rpm -q gnutls-devel httpd php | grep '^package'
缺点是,grep 前面的命令又运行了一遍,如果只能运行一遍的话,这命令也不好用了
    希望有人能有更好的主意
作者: 童话天使    时间: 2011-07-20 13:37
{:2_169:}{:2_169:}{:2_169:}
作者: taojie2000    时间: 2011-07-20 13:58
回复 13# 童话天使


    a=`rpm -q gnutls-devel httpd php | grep '^package'`
    echo $a

    ``   非 引号 ' '
    这么写 也行
作者: 童话天使    时间: 2011-07-20 14:15
我问的主题是引用上一个命令的输出结果,因为写脚本可以长远规划,所以,单独写一个
#!/bin/env bash
rpm -q gnutls-devel httpd php | grep '^package
就行,或许这就是最简单的了。(虽然感觉哪里不对劲,但说不清楚,算了)
如果不用脚本的话,直接在命令行怎么办
上一个命令已经运行了,忽然发现命令的运行结果有可以引用的地反,想引用一下
我在上面已经说过,有些命令不适合运行两遍,用管道的方法就不太好了。
作者: taojie2000    时间: 2011-07-20 14:40
回复 16# 童话天使


#  rpm -q mysql
mysql-.............
#echo $?
0
#  rpm -q gnutls-devel
package gnutls-devel is not installed
#echo $?
1
作者: jerryjzm    时间: 2011-07-20 15:10
我真的不知道LZ要表达什么意思,我们只是在按照你的操作思路来操作,看来问题的关键点远没清楚。

ps:一般都是,你现在什么现在和条件。
      你最终要什么结果,其他的具体实现方式,让回帖人来想就ok了。
作者: 童话天使    时间: 2011-07-20 17:01
rpm -q kernel-devel

   rpm -q bison

   rpm -q bison-devel

   rpm -q httpd

   rpm -q php

   rpm -q perl

   rpm -q ncurses
   rpm -q ncurses-devel
   rpm -q zlib
   rpm -q zlib-devel
   rpm -q openssl
   rpm -q openssl-devel
   rpm -q gnutls-devel
   rpm -q gcc
   rpm -q gcc-c++

   rpm -q mysql

   rpm -q php-mysql

   rpm -q mysql-devel

   rpm -q mysql-server

这些包没装的用yum装上
用脚本实现
作者: chenyx    时间: 2011-07-20 17:05
这个不用脚本,把需要安装的包写到yum install命令后面就行了,已经安装的yum不会重复安装的
作者: 童话天使    时间: 2011-07-20 18:01
好吧,我错了,我举的这个例子却实不恰当
我只是想 如何用脚本简化一些复杂的操作,如何在这个命令里引用上面命令的输出结果以达到其他的一些简化操作。
但是 我举不来例子了,我无法表达的更清楚了,我感到很无力了。感谢各位的关心,感谢各位的关注,这个问题就到这里吧,可能哪天我想到我要的答案了可能会补充上,也可能不会。暂时就算了吧。谢谢各位了
作者: sibiexuan    时间: 2011-07-23 09:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: cdutyang    时间: 2011-07-24 17:57
楼上。。是学习?
作者: 童话天使    时间: 2011-07-25 08:56
又想到一点
比如说
你手动从源码包安装软件
./configure  这个运行了半小时
里面出现了一些no,
运行过后没报错,但就是想看看上面都有什么出现了no,你会怎么做,用什么命令,
别说是./configure | grep 'no$',半小时呢,万一上条命令曾运行2个小时、3个小时怎么办

大概就是这个意思了
作者: rollingpig    时间: 2011-07-25 13:56
LZ, 4楼回答过了。
作者: 童话天使    时间: 2011-07-25 16:38
回复 25# rollingpig


    表示不理解,希望指点
    ./configure 只是个例子,再举例子的话也可以是 make ,输出信息多,时间又长,make之后,想要检索make 的输出信息,是不可能让make再运行一遍的
作者: abcd99    时间: 2011-07-25 21:05
看了半天

rpm -q gnutls-devel httpd php | grep '^package'|awk '{print "yum install -y"$2}'|sh

不知道是不是LZ需要的
作者: weiweiabc109    时间: 2011-07-26 09:12
  1. [root@bogon ~]# rpm -q abc de firefox
  2. package abc is not installed
  3. package de is not installed
  4. firefox-3.6.9-2.el6.centos.i686
  5. [root@bogon ~]# rpm -q abc de firefox | grep pack*
  6. package abc is not installed
  7. package de is not installed
复制代码
如果包很多的话   把包放到一个列表中 然后使用脚本去读取那个列表    rpm -q 这部分道理一样。





另外,大连高薪园区 早一个银600勒房额,有点困难。
作者: 南极雨    时间: 2011-07-26 11:09
回复 1# 童话天使


直接:rpm -q ncurses-devel 不就行了?
写脚本里也是一样的:
  1. [root@~]# vim test
  2. #!/bin/bash
  3. rpm -q ncurses-devel

  4. [root@~]# sh test
  5. package ncurses-devel is not installed
复制代码

作者: 童话天使    时间: 2011-07-27 08:45
回复 29# weiweiabc109


    [root@bogon ~]# rpm -q abc de firefox | grep pack*
   这一行相当于又把前面的 [root@bogon ~]# rpm -q abc de firefox 运行了一遍,可以不用运行这一遍而直接检索上面的三行结果吗?
   另外关于房子的问题谢谢了,这个确实还是网上找着方便
作者: weiweiabc109    时间: 2011-07-27 17:41
上面的为了显示出来给你看一下

当然rpm -q abc de firefox | grep pack* 这一句就可以了{:3_182:}
作者: 童话天使    时间: 2011-07-27 18:19
回复 32# weiweiabc109


    首先对于你能理解我的意思感到很高兴。
    你这条命令我也想到了,但很多时候不会想这么长远,一般都是上一条命令执行之后,看到执行结果才想到什么的,我这样说不知道你能不能理解
    如果你这条命令不这么写是不是就没戏了
    我是不是有点钻牛角尖了,╮(╯▽╰)╭




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2