linux shell 获取上一条命令 不是结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell 获取上一条命令 不是结果相关的知识,希望对你有一定的参考价值。

就是 比如 我脚本里写 cd /abc 如果这条命令执行错误的话 就把这一条命令重定向到一个文件 这个文件内容是 cd /abc 这样我一看就能知道是 cd /abc 执行错误了 普通的重定向 只能把错误的输出结果 重定向到文件里 这样看到的应该是 没有文件或目录 总之就是这个命令执行错误以后 本来在屏幕看到的 重定向到了这个文件 这个文件里是看不到 cd /abc 这个命令的

参考技术A if [ $? != 0 ];then echo $0 ;fi 试试 有一篇介绍shell判断的文章 推荐给你 http://www.jishuyiliu.com/archives/78.html 参考技术B 你每个命令都去判断是对还是错???
那你就每个命令后面加个判断返回值的函数。比如
cd /abc
if [ $? -ne 0 ];then echo cd /abc >>logfile;fi

php通过popen获取的一个命令的返回值如何分析出来

如运行
$cmd = "export LANG=C; /usr/bin/sudo /sbin/vgdisplay";
$info = popen($cmd,'r');
echo $info;

得出的是Resource id #17
就是用php的popen()函数运行了一个linux命令,把这个命令得到的结果$info输出出来是Resource id #17,如何把Resource id #17给解析出来。在linux里运行这个命令显示的是
--- Volume group ---
VG Name localhost
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 232.64 GB
PE Size 4.00 MB
Total PE 59557
Alloc PE / Size 59557 / 232.64 GB
Free PE / Size 0 / 0
VG UUID xhGwsx-3SDn-2mgR-XBrE-Nwtt-uJDM-lW7MB1

参考技术A PHP 中的 popen() 函数

popen() 函数打开进程文件指针。

popen(command,mode)

参数说明
command 必需。规定要执行的命令。
mode 必需。规定连接模式。 可能的值:
r: 只读。
w: 只写 (打开并清空已有文件或创建一个新文件)

打开一个指向进程的管道,该进程由派生指定的 command 命令执行而产生。

返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss() 和 fwrite()。

若出错,则返回 false。
例如:

<?php
$file = popen("/bin/ls","r");

//一些要执行的代码

pclose($file);
?>
参考技术B 1、执行外部程序。语法: string exec(string command, string [array], int [return_var]);返回值: 字符串函数种类: 操作系统与环境内容说明本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用 PassThru() 这个函数。要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。值的注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。相关函数:system() PassThru() popen() EscapeShellCmd()
参考技术C proc_open 用这个也可,

<?php

$handle = popen("tail -f /etc/httpd/logs/access.log 2>&1", 'r');
while(!feof($handle))
$buffer = fgets($handle);
echo "$buffer<br/>\n";
ob_flush();
flush();

pclose($handle);

?>本回答被提问者采纳
参考技术D 不明白你想达到什么功能。

以上是关于linux shell 获取上一条命令 不是结果的主要内容,如果未能解决你的问题,请参考以下文章

linux程序里面怎么获取shell命令结果

linux shell脚本,怎样变量传递执行结果

每天三分钟搞定linux shell脚本26 函数返回值

Linux中echo命令的返回值代表啥意思?

Shell 怎么样把一条命令的返回的结果值 赋给一个变量 脚本问题

bash shell如何获取到命令执行结果的值?