#!/usr/bin/env bash
time=$(date)
nginxConfigPath=$(nginx -t)
echo 'datetime' $time
echo 'config path' $nginxConfigPath
执行上述的shell脚本文件,结果为
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
datetime Fri Nov 16 14:27:14 CST 2018
理论上变量nginxConfigPath应该有值。
实际结果时,nginx -t命令结果在定义时已经显示结果。
abc=$(cmd)
这种方式只能获得标准输出的转向. nginx 输出是标准错误输出, 所以不能得到.以下实验可以验证
如想获得标准错误输出可以用如下方式
文件描述符1是标准输出(stdout)。
文件描述符2是标准错误(stderr)。
这里是要记住这个结构(尽管它并不完全准确)的一种方法:首先,2>1可能看起来像重定向的stderr到stdout。但是,它实际上将被解释为“重定向stderr到名为1” 的文件。&表示后面是文件描述符而不是文件名。所以变成:2>&1。