2016-07-20 4 views
1

に私は、ファイルに非常に同じラインを入れた場合、私は、はbash:スクリプト

ただし、端末にこのラインを入れた場合、非常にうまく機能

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

をしていないターミナルでコマンド作品、 executeme.shchmod +x executeme.sh./executeme.sh

変数に改行が作成されていないようですが、結果としてgrepは1行だけを受け取るようです。端末上で次のように出力されている:

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:受け入れてくれてありがとう、特に2番目のリンクを見てください。 – sjsam

+0

私はそれが動作していることを理解します。 'エコー'ができるだけショットとして出力されるようです - そうですか? Appetntly、私はそれを避けることができ、指定されたString($ {a})を文字列全体として見なさなければなりません。 – Joel