2016-07-20 155 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

相關問題