2016-07-20 125 views
1

我做庆典:在终端命令的工作,而不是在脚本

a="$(openssl x509 -in /path/to/pemfile.pem -text -noout)"; 
echo ${a} |grep -a1 -b2 Signature 

,如果我把此行到终端

但是,如果我把同样的线路在一个文件,它工作得很好executeme.sh,chmod +x executeme.sh,./executeme.sh

我似乎并没有在变量中创建换行符,导致grep只接收到一行。输出是在终端上,如下所示:

20- Version: 3 (0x2) 
38- Serial Number: 32 (0x27) 
64: Signature Algorithm: md5WithRSAEncryption 
107- Issuer: C=EN, ST=a, L=b, O=c, OU=d, CN=e 
244- Validity 
------ 
[...] 

的脚本输出整个证书,好像我只会做a="$(openssl ...)"; echo ${a}

回答

2

echo "${a}" |grep -a1 -b2 Signature #mind the double quotes 

为什么双引号?

请参阅[ this ]答案+ [ this ]答案。

+0

工程,但他们为什么重要? – Joel

+0

@Joel:谢谢你的接受,请看看链接,特别是第二个链接。 – sjsam

+0

我明白,它正在工作。 '回声'似乎输出尽可能拍摄 - 对吗?显然,我可以避免它,强制指定的字符串($ {a})被看作是一个完整的字符串。 – Joel

相关问题