bash:命令在终端中运行,而不是在脚本中运行

时间:2016-07-20 06:10:37

标签: linux bash newline

我在做

a="$(openssl x509 -in /path/to/pemfile.pem -text -noout)";
echo ${a} |grep -a1 -b2 Signature
如果我将这一行放入终端

效果很好

但是,如果我将同一行放在文件executeme.shchmod +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}

一样

1 个答案:

答案 0 :(得分:2)

待办事项

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

为何选择双引号?

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